首先先介绍切面的原理
切面是基于动态代理生成代理对象,拦截Spring管理Bean的访问,即bean注入的时候注入代理的对象。
然后代理对象做了什么事情呢
代理对象包了一层,在执行原对象方法前后做了一些操作。
最后同一个对象方法间的调用不触发第二个方法切面的原因
第一方法是调用注入的代理对象的代理方法,然后执行原对象的方法,而调用第二个方法并没有通过spring管理的bean,而是对象本身(即原对象),所以第二个方法调用的是原对象的,所以没执行切面。
参考:
切面是基于动态代理生成代理对象,拦截Spring管理Bean的访问,即bean注入的时候注入代理的对象。
代理对象包了一层,在执行原对象方法前后做了一些操作。
第一方法是调用注入的代理对象的代理方法,然后执行原对象的方法,而调用第二个方法并没有通过spring管理的bean,而是对象本身(即原对象),所以第二个方法调用的是原对象的,所以没执行切面。
参考: