1.Spring 整合Hibernate整合什么?
2.整合步骤:
2.Spring 如何在web应用中使用?
3.Spring 如何整合struts2?
整合目标:让IOC容器来管理struts2的Action
整合步骤:
1.由IOC容器来管理Hibernate的SessionFactory
2.让Hibernate使用上Spring的声明式事务
2.整合步骤:
1.加入Hibernate
1)jar包
2)添加Hibernate配置文件 hibernate.cfg.xml
a.数据源需配置在IOC容器中,不再hibernate.cfg.xml文件中配置b.关联的.hbm.xml文件也在IOC容器配置SessionFactory实例时进行配置c.配置hibernate的基本属性,比如方言,sql显示以及格式化,生成数据表的策略,二级缓存d.编写持久化类对应的.hbm.xml文件
2.加入Spring
1)jar包2)加入Spring的配置文件 applicationContext.xml
a.配置数据源b.导入配置文件 db.propertiesc.配置Hibernate的SessionFactory实例(通过spring提供的LocalSessionFactoryBean进行配置)
a)通过dataSource配置数据源属性b)通过configLocation配置Hibernate配置文件的名称及位置(也可通过hibernateProperties属性把hibernate.cfg.xml文件中的全部配置移过来)c)通过mappingLocations配置Hibernate映射文件的名称及位置,可以使用通配符
d.配置spring的声明式事务
3.整合a)通过HibernateTransactionManager配置事务管理器(一定记得要配sessionFactory)b)通过<tx:advice/>配置事务属性,需要事务管理器c)通过<aop:config/>配置事务切点,并把切点与事务属性关联起来
2.Spring 如何在web应用中使用?
1.需额外加入的jar包:
spring-web-4.1.6.RELEASE.jarspring-webmvc-4.1.6.RELEASE.jar
2.配置文件跟非web应用的一样
3.如何创建IOC容器?
1)非web应用在main方法中直接创建2)web应用应该在web应用被服务器加载时就创建IOC容器
a.在ServletContextListener的initialized(ServletContextEvent sce)的方法中创建IOC容器后,
可以将其放在ServletContext(即application域)的一个属性中。
b.实际上,spring的配置文件的名称与位置应该是可以配置的!所以应该配置到当前web应用的初始化参数比较合适
<context-param>
<param-name>configLocation</param-name><param-value>applicationContext.xml</param-value>
</context-param>
4.实际上第三步spring已经帮我们解决了,我们只需要在web.xml文件中加入以下配置即可,获取IOC容器可以通过WebApplicationContextUtils对象的getWebApplicationContext(ServletContext sc))方法获取
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener><context-param>
<param-name>ContextConfigLocation</param-name><param-value>applicationContext.xml</param-value>
</context-param>
3.Spring 如何整合struts2?
整合目标:让IOC容器来管理struts2的Action
整合步骤:
1.正常加入struts2(struts-2.3.28.1\apps\struts2-blank\WEB-INF\lib下jar包),再到web.xml文件中配置struts2的核心过滤器
2.在IOC容器中配置struts2的Action时,需要配置scope属性,其值一定要是prototype
<bean id="personAction" class="cn.lfd.spring.struts2.action.PersonAction" scope="prototype"></bean>
3.配置struts2的配置文件:action的节点的class属性要指向IOC容器中的bean的id
<package name="default" namespace="/" extends="struts-default">
<action name="personAction" class="personAction">
<result>/success.jsp</result>
</action>
</package>
4.加入struts2-spring-plugin-2.3.28.1.jar包 5.整合原理:加入struts2-spring-plugin-2.3.28.1.jar包后,struts2会先从IOC容器中获取Action的实例
如果spring中有 则spring负责创建 如果spring没有 则struts2创建