缓存切面自动装配是怎么加进去的
是通过spi的方式把自动配置类加进来,比如AOP是在
E:\spring-boot-2.2.2.RELEASE\spring-boot-project\spring-boot-autoconfigure\target\spring-boot-autoconfigure-2.2.2.RELEASE.jar!\META-INF\spring.factories
文件里面org.springframework.boot.autoconfigure.aop.AopAutoConfiguration
 
AopAutoConfiguration里面
1————————————————
 
1.     @ConditionalOnProperty加载配置文件spring.aop开头的配置(读取yml配置文件里面spring.aop.auto =  true  的配置,如果配置了这个,说明要用到AOP的自动配置功能,当然这个默认值是true,你不需要手动开启,因为框架自动开启了,如果你不需要的话,你可以设置为false)
2.     如果你想给AOP手动弄进来需要添加@EnableAspectJAutoProxy注解,添加了这个注解就代表添加了AOP的功能.注意,这个和上面是不一样的,上个是开启AOP的自动配置,这个是增加AOP的功能.
  
 
1————————————————
 
 
(一)@EnableAspectJAutoProxy注解添加AOP功能做的事情
@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AspectJAutoProxyRegistrar.class)public @interface EnableAspectJAutoProxy {
 
 
首先@Import了org.springframework.context.annotation.AspectJAutoProxyRegistrar 类
 
 
org.springframework.context.annotation.AspectJAutoProxyRegistrar给AOP的入口类加入到了Spring容器里面(ConfigurationClassPostProcessor加入的???有待考证),
 
 
 
(二)AopAutoConfiguration类
这个类里面有个内部类
@Configuration(proxyBeanMethods = false)@ConditionalOnClass(Advice.class)static class AspectJAutoProxyingConfiguration {@Configuration(proxyBeanMethods = false)@EnableAspectJAutoProxy(proxyTargetClass = false)@ConditionalOnProperty(prefix = "spring.aop", name = "proxy-target-class", havingValue = "false",matchIfMissing = false)static class JdkDynamicAutoProxyConfiguration {}@Configuration(proxyBeanMethods = false)@EnableAspectJAutoProxy(proxyTargetClass = true)@ConditionalOnProperty(prefix = "spring.aop", name = "proxy-target-class", havingValue = "true",matchIfMissing = true)static class CglibAutoProxyConfiguration {}}
 
 
@EnableAspectJAutoProxy 主要看这个注解,是加入AOP功能的注解,看到源码.默认是采用CGLib的动态代理的,如果你想用JDK的动态代理.就在yml配置spring.aop.proxy-target-class = false .
 
 
 
 
 
 
