Spring与Hibernate、Struts调整方法笔记
Spring 管理HibernateSessionFactory
- Bean.xml for injecting HibernateConnectionFactory and HibernateTemplate
<bean id="hibernateTempalte" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="senssionFactory ' ref="sessionFactory''></property>
</bean>
- in XXXDao.java
@Component("userDao")
Public class UserDaoImpl implements UserDao{
Private HibernateTemplate;
@Resource
Public void setHibernateTemplate(HIbernateTemplate hibernateTemplate){
This.hibernateTemplate = hibernateTemplate;
}
// use hibernateTemplate in a method
hibernateTemplate.save(user);
hibernateTemplate.find(String HQL);
hibernateTemplate.findByCriteria(String sql);
HibernateTemplate.getSessionFactory.getCurrentSession();
}
- In UserManagerImpl.java
@Resource
Public void setUserDao(UserDao userDao){
This.userDao = userDao;
}
- In UserAction.java (Struts)
Private UserManager um;
Public UserAction(){
ApplacationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
um = (UserManager)Ctx.getBean("UserManager");
}
- 不再需要hibernate.cfg.cml, 数据库配置在beans.xml
Spring与Struts整合,由Spring负责管理所有Action的初始化
- 为什么UserAction是由Struts初始化;就不能由Spring负责给UserAction提供UserManager?难道struts不支持@Resource这个annotation?所以只能由Spring代替Struts来管理UserAction,这样就可以随意注入UserManger实例到UserAction中?这也是Spring和Struts的结合点。
- Web.xml
tomacat启动时初始化Spring中的bean对象,需要在web.xml中添加下面监听器
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
<!-- Default: find WEB-INF/applicationContext.xml-->
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml, classpath*:applicationContext-*.xml</param-value>
<!-- customized config
<param-value>classpath:beans.xml</param-value>
-->
</context-param>
- Add spring for struts plug-in jar file. Struts-spring-plugin-2.16.jar
- UserAction 类上面添加注解Component("user")和@scope("protptype") (scope为prototype表示多例,每个session生成一个Action实例), 则此Action会由Spring负责生成。注意:Component("user")中的"user"要与struts.xml中的Action name相同.例如 struts.xml中有:
<action name="user" class="com.bjsxt.registration.action.UserAction">
<result name="success">/registerSuccess.jsp</result>
<result name="fail">/registerFail.jsp</result>
</action>
-
Struts的读配置文件顺序
- Struts-default.xml
- Struts-plugin.xml
- Struts.xml
- Struts.properties
-
Web.xml
其中,@Component表示该类由Spring管理并且负责生成实例;@Resource 表示由Spring负责提供实例,不用手动new出来。