天天看点

浅谈Spring的事务配置注意点

直接上干货

配置事务需要

1.事务管理器

2.配置事务详情

3.配置aop代理

注意点一:

在Controlle层注入Service层的时候,在不配置事务的前提下可以使用service接口和service实现类都可以进行注入

在配置事务的前提下,如果还是使用service实现类来进行注入会造成找不到service实现类的的异常,反之使用service接口进行注入的时候项目会正常启动

why: 原因在于在Spring注入的service层的时候,注入的其实是一个service的事务代理类对象,这个代理类的对象需要被代理类对象和数据源以及事务需要的一些资源进行生成,而Spring生成代理类一般有两种方式,

方式一jdk代理:如果被代理类有接口,会实现这个接口生成代理类对象

方式二:cjlib代理:没有接口,会继承这个类生成代理类

生成的代理类会替代原来Sringioc生成的service的对象进行注入

而Spring的注入方式有两种一是使用id进行注入,和类型注入

生成代理类使用id注入可以排除,如果使用类型进行注入,当service层使用接口进行注入,代理类实现类service层的接口,可以看成类型是一致的所以可以成功注入,反之使用service层的实现类进行注入会造成类型不匹配,而出现错误