spring aop进不了切面
现象
使用自定义切面的注解时,发现在同一个类中,调用其他使用了注解的方法,但是一直进不了切面。代码如下:
@Service
public class XxxService{
public void mothodA () {
mothodB();
}
@DataAuthority //自定义切面注解
public void mothodB () {
}
}
解决方法:
即直接使用mothodB()调用方法,这里其实使用的是this对象去调用的,而aop只有使用代理对象去调用才可
以。
@Service
public class XxxService{
//直接注入对象(本类),即使用spring的代理对象,然后调用
@Autowired
private XxxService xxxService;
public void mothodA () {
xxxService.mothodB();
}
@DataAuthority //自定义切面注解
public void mothodB () {
}
}
本质
Spring Aop切面是通过动态代理实现的。如果通过this调用方法则没有经过代理。自然无法进入切面。