Shiro与SpringAOP冲突导致无法请求到Controller
2023-04-16 19:11:15 453
各依赖版本
org.crazycake:shiro-redis-spring-boot-starter:3.2.1
org.springframework.boot:spring-boot-starter-aop:2.3.0.RELEASE
有个配置如下
@Bean
public static DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {
return new DefaultAdvisorAutoProxyCreator();
}
这玩意会导致aop失效, 究极神坑.
如果你使用aspectj对controller进行了增强,那么定义的接口会无法访问,全部404
需要加上这个
defaultAdvisorAutoProxyCreator.setProxyTargetClass(true);
setProxyTargetClass
方法注释如下
设置是否直接代理目标类,而不仅仅是代理特定的接口。默认值为“false”。 将其设置为“true”以强制为TargetSource公开的目标类进行代理。如果该目标类是一个接口,则会为给定的接口创建一个JDK代理。如果该目标类是任何其他类,则会为给定的类创建一个CGLIB代理。 注意:根据具体代理工厂的配置,如果没有指定接口(并且未激活接口自动检测),则代理目标类行为也将被应用。
ref: https://blog.csdn.net/qq_33306246/article/details/106573462