什么情况下spring对注入的是代理对象及普通对象?
前提开启事务注解<tx:annotation-driven/>
① service方法添加@Transactional注解或者加入其它aop拦截配置,并且没有实现接口
注入的service是代理对象(CGLIB代理)。
② service方法添加@Transactional注解或者加入其它aop拦截配置,并且实现了接口方法
注入的service是代理对象(JDK代理)。
③ service方法没有添加@Transactional注解或者其它aop拦截配置
注入的service不是代理对象,而是普通bean对象。
原理:spring创建bean过程中,service会根据事务注解或者被aop拦截到,创建代理对象,织入增强器。