首先,三大框架整合,肯定是要導入相當多的jar包,這是不容置疑的!
這里就不一一列舉了,直接截圖吧:
(1) 基於配置文件的整合:
第一步:我們需要在web.xml中定義一個Struts2的filter:
第二步:編寫Struts.xml文件:
這個就不細說了!!
第三步:在web.xml中配置一個監聽器,因為如果我們要加載applicationContext.xml,然而action是多實例的,如果每請求一次action就要加載一次xml的話,這會使得你的整個項目效率十分低 下,因此,我的想法是把applicationContext.xml文件放在servletContext中,只加載一次,因此我們就需要配置一個servletContext的監聽器。
第四步:先開始Struts2與Spring的整合:先把service,dao,entity,action這些層次建好
(1.1)Struts2自己管理action的方式:
(1.2) action交給Spring管理:
action交給Spring管理的話,Struts.xml文件里action的class不應該寫全類名,只需要寫Spring里的id名即可,並且 要設置scope="prototype",因為action是多例的!!
其實這里還是推薦你們用Spring管理,因為可以整合Spring的AOP進行統一管理!!
同時這里要注意的一個地方是,因為這是Struts2余Spring整合,所以這里有一個比較快捷的小技巧,但是這要依賴一個jar包:
傳統方式要通過類來getBean獲取service,而這里只需要配置一下常量就可以在action里不需要通過注解或者配置 文件就可以對service直接進行調用,只需要設置一下setService方法即可!!
第五步:Spring與Hibernate的整合:
有兩種方式:
(1)零障礙整合
千萬不要忘記了要配置事務管理哦!!
之所以直接注入sessionFactory就可以調用模板,你打開HibernateDaoSupport類,可以發現,在里面有個setSessionFactory方法里,創建了template
同時要再業務層(service層,用以控制事務)加上:
(2)無Hibernate配置文件形式
在Spring中就要配置好Hibernate的一些屬性:
1.c3p0連接池的信息:
2.hibernate常用屬性:
3.映射關系:
關於在dao層查詢出來的result,如果要傳到web層的話,可能在service層就已經將事務關閉,因此在web層不能及時的接收到要獲取的對象,因此我們要在web層開啟事務!!
(2) 基於注解的整合:
第1-3步:前三步和上面的xml形式整合是一樣的,就不細說了!
第四步:建立action:
第五步:注冊實體類:
第六步:之后就是事務管理器的注冊和模板注入,和上面一樣,就不細說了!!