struts1.2 中的配置:
<bean id="userDao" class="com.MI2SE.ilip.admin.user.dao.UserDao">
<property name="sessionFactory">
<ref bean="sessionFactory"></ref>
</property>
</bean>
<bean id="userManagerService" parent="baseProxy">
<property name="target">
<ref bean="userManagerTarget"/>
</property>
</bean>
<!-- Manager Service Config -->
<bean id="userManagerTarget" class="com.MI2SE.ilip.admin.user.UserManageServiceImpl" parent="baseManager">
<property name="userDao">
<ref bean="userDao"></ref>
</property>
<property name="roleDao">
<ref bean="roleDao"></ref>
</property>
</bean>
<bean id="baseProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED,-BusinessException</prop>
</props>
</property>
</bean>
struts1.2在baseProxy 建立一个公用的transactionAttributes,故在各个DAO里就不用再重复写了。
struts2 中的配置:必须使用Proxy代理:
<bean id="MenuBarDAO" class="com.cssrc.dao.impl.MenuBarDAOImpl">
<property name="sessionFactory">
<ref bean="sessionFactory"></ref>
</property>
</bean>
<bean id="MenuBarDAOProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="MenuBarDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert">PROPAGATION_REQUIRED</prop>
<prop key="modify*">PROPAGATION_REQUIRED</prop>
<prop key="get">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean name="LoginAction" class="com.cssrc.web.action.login.Login" scope="prototype">
<property name="usersDAO">
<ref bean="UsersDAOProxy" />
</property>
<property name="menuNavigationDAO">
<ref bean="MenuNavigationDAOProxy" />
</property>
<property name="menuBarDAO">
<ref bean="MenuBarDAOProxy" />
</property>
<property name="menuItemDAO">
<ref bean="MenuItemDAOProxy" />
</property>
</bean>
transactionAttributes在各个proxy里写,需要重复写。
对所有的dao都这样。
struts2框架的action在applicationContext_login.xml中配置
<bean id="loginAction" class="com.cdm.action.LoginAction" scope="prototype">
<property name="loginService">
<ref bean="loginService" />
</property>
<property name="usersService">
<ref bean="usersService" />
</property>
<property name="systemParamService">
<ref bean="systemParamService" />
</property>
</bean>
同时,在struts_login.xml中配置跳转,如下:
<action name="Login*Action" method="{1}" class="loginAction">
<result name="input">/index.jsp</result>
<result name="main">/main.jsp</result>
<result name="menuOutLook">/common/menuOutlook.jsp</result>
</action>
而struts1.2没有在applicationContext_login.xml配置action,而是全部在struts.xml中完成action的配置
如下所示:
<action path="/registers/budgetAction" parameter="method"
type="com.MI2SE.ilip.registers.budget.struts.BudgetAction"
name="budgetForm" scope="request">
<forward name="init"
path="/registers/budget/budgetQuery.jsp">
</forward>
<forward name="part"
path="/registers/budget/budgetQueryItemPart.jsp">
</forward>
</action>
故使用struts2的时候,action.java中的service,dao 要在applicationContext_login.xml
中对应的bean中配置。