1、加载过程

  spring首先检测配置文件中的代理配置,然后去加载bean; 如果配置文件中没有配置代理,自然代理不会生效,如果配置了代理,但是代理还没有生效,那么有可能是加载顺序的问题,即在检测到代理配置之前,先加载的bean;这种情况尤其是在多个spring配置文件中的系统中容易出现,注意spring配置文件的加载顺序!

<!-- 强制使用cglib代理 -->
<aop:aspectj-autoproxy proxy-target-class="true" expose-proxy="true" />

  两个属性的含义:前者是表明强制使用CGLIB代理,后者表示可以在线程中拿到代理对象,主要用于对内部方法的拦截!

  当检测到配置了代理之后,就会扫描跟代理相关的注解!如:@Aspect    @Around    @Pointcut

  尤其是@Pointcut这个注解,根据注解信息,直接确定了在getbean的时候,拿到的是代理!

2、Spring提供了4种实现AOP的方式(暂未深入研究)
  1) 经典的基于代理的AOP 
  2) @AspectJ注解驱动的切面 
  3) 纯POJO切面 
  4) 注入式AspectJ切面 

3、示例程序