流程:
1、首先当我们启动spring容器的时候,spring的配置文件被加载。
2、根据配置文件为所有的Bean创建对象。
3、创建完对象之后,会遇到aop的配置。
4、首先解析切入点表达式,并把切入点表达式与bean相匹配,如果能匹配成功,为该bean创建代理对象。如果匹配不成功,则代理对象为目标类。
5、因为代理对象的方法是由目标方法+通知组成,所以spring会根据aop:aspect中的aop:before/aop:after-returning等的方法以及目标方法来组合成对象方法
*注意:
spring会根据目标类有没有实现接口来决定使用jdK代理/cglib代理。
1、当我们的目标类有实现接口的时候,它是jdk代理:
2、当目标类没有实现接口的时候:
使用cglib代理: