在spring的配置文件中配置的bean
<bean id="serverInfoService" class="com.wod.service.impl.ServerInfoServiceImpl">
<property name="serverInfoDao" ref="serverInfoDao"/>
<property name="sib" ref="serverInfoBean"/>
</bean>
可以看出,struts2可以直接只用在spring2中配置的bean,引用過來作為action。
這樣struts2就可以跑在spring2里面了.
另外,在web.xml中還有這些內(nèi)容:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:properties/work-assistant*.xml</param-value>
</context-param>
加載spring的配置文件
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
設(shè)置spring的context listener
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
設(shè)置struts2的dispatcher。
二.hibernate3 與 spring2
Spring 與 hibernate結(jié)合的時(shí)候,配置文件修改比較多。首先是hibernate的自身的配置被集成到了spring的配置文件中了.
1.設(shè)置transactionManager
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"
p:sessionFactory-ref="sessionFactory"/>
2.設(shè)置advice
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="find*" read-only="true"/>
<tx:method name="get*" read-only="true"/>
<tx:method name="list*" read-only="true"/>
<tx:method name="*" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
3.接下來設(shè)置AOP
<aop:config>
<aop:pointcut id="businessService" expression="execution(* com.hisoft.db.hibernate.impl.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="businessService" />
<aop:aspect id="businessAspect" ref="AOPTest">
<aop:before pointcut-ref="businessService" method="before"/>
<aop:after-returning pointcut-ref="businessService" method="after"/>
</aop:aspect>
</aop:config>
這個(gè)的意思是說,當(dāng)執(zhí)行到com.hisoft.db.hibernate.impl這個(gè)包下面的任何類的任何方法,而且不管參數(shù)是什么,也就是說這個(gè)包下面的所有方法調(diào)用了,都要接受前面的transactionManager的管理。
4.AOP設(shè)置
<bean id="AOPTest" class="com.wod.common.LogHandler.AOPTest"/>
<aop:config>
<aop:pointcut id="businessService" expression="execution(* com.hisoft.db.hibernate.impl.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="businessService" />
<aop:aspect id="businessAspect" ref="AOPTest">
<aop:before pointcut-ref="businessService" method="before"/>
<aop:after-returning pointcut-ref="businessService" method="after"/>
</aop:aspect>
</aop:config>
定義一個(gè)切面,叫做businessAspect,引用的是我前面定義的一個(gè)叫做AOPTest的類,然后下面的兩句話:
<aop:before pointcut-ref="businessService" method="before"/>
<aop:after-returning pointcut-ref="businessService" method="after"/>
aop:before 指的是在調(diào)用目標(biāo)方法之前要干點(diǎn)事情,pointcut-ref="businessService"就是目標(biāo)的方法,在調(diào)用匹配這個(gè)pointcut 的方法之前,會(huì)調(diào)用 method中定義的那個(gè)方法。
聯(lián)系客服