先导入Spring:
导入jar包:
在web.xml配置文件添加Spring 启动监听器
<!-- Spring监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>添加参数,设置Spring读取配置文件的名称:
<!-- 参数设置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-*.xml</param-value> </context-param>———————————————————————————————————————————————————————
Spring整合Hibernate框架:
1、通过Spring提供 LocalSessionFactoryBean ,直接引入hibernate配置文件 ,在Spring容器中获得SessionFactory对象
<!-- 1、Spring管理Hibernate,使用LocalSessionFactoryBean取代HibernateSessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" value="classpath:hibernate.cfg.xml"/> </bean>2、创建session
<!-- 2、 通过sessionFactory创建session,在Spring中由HibernaTemplate封装session--> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory"></property> </bean>3、配置事物管理器transactionManager
<!-- 3、如果需要实现Spring的AOP声明式事务,则需要Spring提供事务管理器,所有session都是由sessionFactory创建的事务管理器需要控制sessionFactory --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" > <property name="sessionFactory" ref="sessionFactory"></property> </bean>4、配置事务通知 事务由事务管理器提供
<!-- 4、配置事务通知 事务由事务管理器提供 --> <tx:advice id="advice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED"/> <tx:method name="delete*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="*" propagation="NEVER" read-only="true"/> </tx:attributes> </tx:advice>5、配置切入表达式
<aop:config> <aop:pointcut id="pointcut" expression="execution(* com.wjb.shop.service.impl.*.*(..))" /> <aop:advisor advice-ref="advice" pointcut-ref="pointcut"/> </aop:config>——————————————————————————————————————————————————————
注意:如果Struts没有与Spring整合则不要添加struts2-spring-plugin 添加后,反而创建Action的时候会报错.
1、在web.xml中添加过滤器
<!-- Struts2过滤器配置 --> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>2、添加struts2-spring-plugin
我们会发现struts2-spring-plugin只有一个类和一个struts-plugin.xml配置文件, 我们打开struts-plugin配置文件源码如下:struts-plugin.xml此配置文件在项目启动的时候会被加载
<struts> <bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" /> <!-- 修改了创建Struts Action的工厂类,默认呢的配置在default.properties配置文件中 --> <constant name="struts.objectFactory" value="spring" /> </package> </struts>
Spring整合Struts2
方式一:
<!-- 第一种 struts2 整合spring 方式, struts2自己管理Action --> <action name="bookadd" class="cn.itcast.action.BookaddAction" />
Action 提供setBookService方法后,会自动找到 applicationContext.xml 配置的 id为bookService的Bean,完成注入
方式二:将Action 交给Spring管理
<!-- 第二种 将Action 交给Spring管理 --> <!--bookaddAction并不是真实类名,只是指向Spring管理Action Bean的id --> <action name="bookadd" class="bookaddAction" />在applicationContext.xml中加入
<!-- 加入Action Bean --> <bean id="bookaddAction" class="cn.itcast.action.BookaddAction" scope="prototype"> <!-- 依赖注入Service --> <property name="bookService" ref="bookService" /> </bean>第一种整合方式,Action由Struts2自己管理,Service对象采用自动装配, Struts2管理Action多实例的
使用注解整合SSH