2 回答

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
事務(wù)直接配到DAO上
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="baseTxProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
lazy-init="true" abstract="true">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="update*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="studentDaoProxy" parent="baseTxProxy">
<property name="target">
<ref bean="studentDao" />
</property>
</bean>
<bean id="studentDao" class="com.dao.StudentDaoImpl">
<property name="dataSource" ref="dataSource" />
</bean>
StudentDao st = (StudentDao) context.getBean("studentDaoProxy");
兩個(gè)bean也可以合并為
<bean id="studentDao" parent="baseTxProxy">
<property name="target">
<bean class="com.dao.StudentDaoImpl">
<property name="dataSource" ref="dataSource" />
<property name="kpiDao" ref="kpiDao" />
</bean>
</property>
</bean>
StudentDao st = (StudentDao) context.getBean("studentDao");
上述這種方式必須使用接口,為什么。
第二種同樣必須用接口。配置起來(lái)比第一種麻煩
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="update*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="studentDaoProxy"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="studentDao" />
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
<bean id="studentDao" class="com.dao.StudentDaoImpl">
<property name="dataSource" ref="dataSource" />
</bean>
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
StudentDao st = (StudentDao) context.getBean("studentDaoProxy");
如果使用的都是接口,那么就不需要用cglib-nodep-2.1_3.jar
如果service調(diào)dao沒(méi)有用到接口,那么必須用cglib-nodep-2.1_3.jar
- 2 回答
- 0 關(guān)注
- 1611 瀏覽
添加回答
舉報(bào)