spring AOP面向切面编程。 spring通过继承需要被代理的类,我们在注入类型bean时实际上是得到代理对象,即我们被代理对象的子类实例化出来的对象,执行的方法也是代理对象的同名方法。
例如下面一个例子:
类 Aspect 的一个方法增强 AService的test()方法。则spring会新建一个类extend AService,重写其test方法。
public class AService{
@Autowired
BService bService;
public 返回参数类型 test(参数……){
//逻辑代码
}
}
//spring会生成AService的代理类
public class XXX extend AService{
AService target ;
public 返回参数类型 test(参数……){
Aspect的增强方法;//假如是前增强
targe.test(参数……);
}
}