今天仔细想了想,终于找到解决方案了。
首先对BO进行声明性事务代理。
然后在配置环绕通知时将目标对象设为事务代理对象。
例如:
<bean id="bo" class="com.bo.BO">
<property name="dao" ref="dao">
</property>
</bean>
<bean id="proxyBo" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target" ref="bo">
</property>
<property name="transactionManager" ref="htm">
</property>
<property name="transactionAttributes">
<props>
<prop key="*"> PROPAGATION_REQUIRED
</prop>
</props>
</property>
</bean>
上面是给bo装备事务代理,target指明了目标对象是我1个id为bo的bean.
<bean id="interceptor" class="com.util.MyBoLogger">
</bean>
<bean id="myadvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice" ref="interceptor">
</property>
<property name="pattern" value="com.bo.BO.*">
</property>
</bean>
<bean id="logProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="proxyBo">
</property>
<property name="interceptorNames">
<list>
<value> myadvisor </value>
</list>
</property>
<property name="proxyInterfaces">
<list>
<value> com.bo.BOIF </value>
</list>
</property>
</bean>
这是添加环绕通知,在
<bean id="logProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
中,
<property name="target" ref="proxyBo">
</property>
目标对象是前面设置好的事务代理bean.
前提是要使用jdk的动态代理,不能用cglib,让BO类实现1个接口就可以了,我的接口是com.bo.BOIF,
需要用 <property name="proxyInterfaces">
指明。
让需要注入bo这个bean的时候,
<bean name="/login" class="com.ness.struts.action.LoginAction">
<property name="bo" ref="logProxy">
</property>
</bean>
直接注入环绕通知bean.我的是logProxy。现在调用bo这个bean的时候就有了事务和环绕2种代理。
分享到:
相关推荐
spring声明事务的配置 spring声明事务的配置 spring声明事务的配置
Spring 事务代理配置 Spring 事务代理配置
Java高级编程 实验报告 spring 声明事务 实验目的 掌握spring 声明式事务管理配置 实验环境 本实验采用本实验采用的eclipse或者 Myeclpse开发工具。Spring 4.0以上 Jdk1.7以上、oracle/mysql。
Spring 声明式事务和Spring 编程式事务
本代码使用H2内存数据库演示spring事务使用,包括编程式事务,声明式事务@Transactional使用,自定义事务事务注解实现自定义事务管理器
spring+mybatis的声明式事务
spring声明式事务实例 可复制修改使用。。。。。。。。。。
在Spring中使用JTA事务管理 1 通过集成JOTM,直接在Spring中使用JTA事务 1.1. 将JOTM以下类库添加到类路径中 1.2. 编写JOTM配置文件,放到类路径下 1.3. 在MySQL上建立两个数据库 1.4. 在Spring配置文件中配置JOTM ...
可以在spring中对整个项目的事务进行控制
在Spring3中配置声明式事务比早期版本显得更加简便。只需要几行配置文件+注解就可以实现面向切面的AOP事务
本文系统的介绍了Spring中的四种声明式事务的配置。可应用于实践项目中。
Spring使用TransactionProxyFactoryBean声明式事务配置实例
spring+ibatis声明式事务Demo源码
spring声明式事务处理demo。myeclipse工程
<?xml version="1.0" encoding="UTF-8"?><beansxmlns=...
Spring_Hibernate使用TransactionInterceptor声明式事务配置.doc
Spring事务配置的五种方式 ,根据代理机制的不同,总结了五种Spring事务的配置方式.
1. 基于Aspectj实现动态数据源...6. 实现事务内切换数据源(支持原生Spring声明式事务哟,仅此一家),并支持多数据源事务回滚(有了它除了跨服务的事务你需要考虑分布式事务,其他都不需要,极大的减少了系统的复杂程度)
spring事务与数据库操作