spring中的事务管理(总结)

spring中的事务管理(总结)


SpringIOC 容器和 SpringMVCIOC 容器的关系

SpringMVC 的 IOC 容器中的bean 可以来引用 Spring IOC 容器中的bean.

返回来呢 ? 反之则不行. Spring IOC 容器中的 bean 却不能来引用 SpringMVC IOC 容器中的 bean 

l  在 Spring MVC 配置文件中引用业务层的 Bean

l  多个 Spring IOC 容器之间可以设置为父子关系,以实现良好的解耦。

l  Spring MVC WEB 层容器可作为 “业务层” Spring 容器的子容器:

即 WEB 层容器可以引用业务层容器的 Bean,而业务层容器却访问不到 WEB 层容器的 Bean

 

 

3.cxf事务的配置

在Spring的项目中,使用@WebService远程调用接口时,不可以为@WebService添加事务

 

在WebService自己的项目中可以使用Spring的DataSourceTransactionManage事务管理器,配置方法与在Spring和SpringMVC中配置事务的方法类似,也可以为cxf添加业务层,把配置信息写在spring的配置文件中即可

 

 

 

总结:

一般来说,添加事务时,类、接口被所配置事务的容器管理,并且类、接口的方法在其切入点表达式的范围内,就可以添加上事务。

 

多数据源切换和事务管理的aop之间的关系

多数据源切换在遇到事务时,

如果在业务层切换数据源,相当于在业务层注入控制层时,注入的是代理的业务,代理的业务层的数据源已经在DataSourceTransactionManager中指定

在代码执行到业务层时,执行的是代理,在被代理类中切换数据源无效

 



 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring ,可以使用 AOP(面向切面编程)和声明式事务管理来管理事务。 在声明式事务管理,可以使用 @Transactional 注解来标记希望进行事务管理的方法或类。该注解可以用于类级别或方法级别,并且可以设置不同的传播行为、隔离级别和超时等属性。当使用 @Transactional 注解时,Spring 会自动为被标记的方法或类创建代理对象,在代理对象添加事务管理的代码。 例如,以下代码演示了如何在 Spring 使用声明式事务管理: ```java @Service @Transactional public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public void transferMoney(String fromUser, String toUser, double amount) { User from = userDao.getUserByName(fromUser); User to = userDao.getUserByName(toUser); from.setBalance(from.getBalance() - amount); to.setBalance(to.getBalance() + amount); userDao.updateUser(from); userDao.updateUser(to); } } ``` 在上面的示例,@Transactional 注解用于 UserServiceImpl 类上,表示该类的所有方法都将使用声明式事务管理。在 transferMoney() 方法,当更新两个用户的余额时,如果发生异常,Spring 会自动回滚事务,确保转账操作在原子性和一致性方面的正确性。 注意,为了使声明式事务管理正常工作,需要在 Spring 配置文件配置事务管理器和事务通知等相关组件。例如: ```xml <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="transferMoney" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="userServicePointcut" expression="execution(* com.example.UserService.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="userServicePointcut"/> </aop:config> ``` 在上面的示例,配置了一个 DataSourceTransactionManager 作为事务管理器,并使用 txAdvice 定义了一个事务通知。通过 aop:config 和 aop:advisor 将该事务通知织入到 UserService ,以进行声明式事务管理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值