spring中的事务管理(五)

spring中的事务管理(五)


事务的相关配置方法

 

1.Spring容器事务配置的步骤

常规配置步骤

1引入事务pom依赖信息

2在容器中配置DataSourceTransactionManager事务管理器

3 DataSourceTransactionManager事务管理器的方法用aop方式来管理业务层的提交和回滚

4 DataSourceTransactionManager是aop的通知

5 配置通知连接切点的切点表达式

 

AOP

1 切入点和切面(切入点是用来表示连接点点的表达式,切面是切入点的集合)

2 连接点(被代理方法)

3 通知(需要在代理类中对被代理方法进行的修改)

 

 

2.SpringMVC事务的配置

1.常规事务配置

在Spring中配置了事务,在SpringMVC控制层注入(@Controller)业务层(@Service)需要的接口,可以让DataSourceTransactionManager容器事务起作用,如果使用实现类,自动注入会报错,这是因为加入事务之后业务层实现被aop代理类代替了,生成的业务层的实现类是代理类的类型,此时用接口注入,aop代理类和被代理类实现同一个接口

 

2.其他情况下的事务:

(1)在一个项目中,在不使用Spring容器事务前提下,将业务层的bean放在mvc容器中和放在spring容器中都可以,并且用imp实现类注入,和用inf接口注入没有区别

 

(2)在一个项目中,在使用Spring容器事务前提下,如果将业务层的bean放在mvc容器中,可以实现类和接口的注入,但是事务不起作用,如果放在spring容器中,必须使用接口注入,事务才会起作用,这是因为Spring的容器事务管理业务层的事务,前提必须是在spring的容器内,如果业务层在mvc,mvc容器是私有容器(spring容器是公共容器),将会导致spring的容器事务管理器DataSourceTransactionManager无权代理mvc容器中的业务层的方法

 

(3)在一个项目中,在使用Spring容器事务前提下,如果将spring配置文件的全部配置信息都放到springmvc配置文件中,也就是说,将事务配置也放到springmvc容器中,也可以实现接口的注入,并且事务也可以起作用,但不建议这样做

 

(4)在一个项目中,在使用Spring容器事务前提下,如果将spring配置文件的全部配置信息都放到springmvc配置文件中,也就是说,将事务配置也放到springmvc容器中,让切入点表达式也包含控制层的方法,直接调用Mapper中的方法,也可以为控制层方法添加事务,但不建议这样做

 

(5)如果在web.xml中不配置<load-on-startup>1</load-on-startup>当使用是实现类注入时,启动项目时不会报错,但发送请求时会报错,因为配置之后,在项目启动时,mvc的servlet启动时就会创建,因此这种方式并不能解决实现类注入问题

 

猜你喜欢

转载自blog.csdn.net/dl0246/article/details/78609616