1.SpringMVC环境下,新建一个Service类,以及其实现类,类使用@Transational注解,然后在别的类里@Autowired这个类,使用AopUtils.isAopProxy()判断该类是否被Spring代理,返回的false,这是为什么?理论上带有事务注解,不是应该要被Spring代理的吗?
2.我使用@Aspect注解,自己定义一个切面,并且让某个Service类满足@Pointcut的条件,此时也使用AopUtils.isAopProxy()判断该类是否被Spring代理,此时返回的是true,我再进一步使用 AopUtils.isJdkDynamicProxy判断是否是JDK的代理,返回的是false, AopUtils.isCglibProxy()返回的是true,这是为什么,我的这个类是有对应的接口的,看网上的资料不是说有接口的话就会使用JDK自己的代理吗?
关于问题1的代码如下 一个简单的类:
@Service
@Transactional
public class TestService1{
}
在controller里引用:
@RestController
@RequestMapping
public class LoginController {
@Autowired
TestService1 testService1;
@RequestMapping("/guest")
public Response<String> guest() {
AopUtils.isAopProxy(testService1); //out put false
return Response.<String>builder().code(200).data("guest!").build();
}
}
启动项目测试会走到guest方法中,此时打印的是false。 理论上testService1不是被事务注解修饰了,应该输出true吗?
1.代码呢
2.SpringBoot2.0开始默认就是Cglib