@Configuration
是一个FullConfigBeanDefinition
会被BeanDefinitionRegistryPostProcessor解析
@ComponentScan
1、ConfigBeanDefintion包含@Component注解
2、ComponentScanAnnotationParser#parse方法扫描BeanDefintion(调用ClassPathBeanDefinitionScanner的doScan方法进行扫描)
3、步骤2扫描出来BeanDefinition的,判断是否是ConfigBeanDefinition,继续调用processConfigurationClass
@Import
1、普通类直接导入
2、如果类实现了ImportSelector,导入类的字符串数组
3、如果类继承了ImportBeanDefinitionRegistrar,方法中有BeanDefinitionRegistry对象,直接注册BeanDefinition
@EnableAspectJAutoProxy
1 @EnableAspectJAutoProxy类上包含注解@Import(AspectJAutoProxyRegistrar.class)
2 AspectJAutoProxyRegistrar实现了ImportBeanDefinitionRegistrar类,
当ConfigurationClassBeanDefinitionRegistry#postProcessBeanDefinitionRegistry执行的时候,会调用ImportBeanDefinitionRegistrar#registerBeanDefinitions方法,会注册AnnotationAwareAspectJAutoProxyCreator的Bean定义,同时会设置proxy-target-class和expose-proxy属性。
@Aspect
1 BeanDefinitionPostProcessor#postProcessAfterInitlization,执行初始化后置处理
2 调用AbstractAutoProxyCreator的postProcessAfterInitlization
3 调用wrapIfNecessary,利用BeanFactoryAspectJAdvisorsBuilderAdapter解析@Aspect注解,实际上是拦截在的
@Pointcut 解析为AspectJExpressionPointcut
@Before 会解析为InstantiationModelAwarePointcutAdvisorImpl, advice为AspecJMethodBeforeAdvice
@After 会解析为InstantiationModelAwarePointcutAdvisorImpl, advice为AspectJAfterAdvice
@Around 会解析为InstantiationModelAwarePointcutAdvisorImpl, advice为AspectAroundAdvice
@AfterReturn 会解析为InstantiationModelAwarePointcutAdvisorImpl, advice为AspectJAfterReturningAdvice
@AfterThrowing 会解析为InstantiationModelAwarePointcutAdvisorImpl, advice为AspectJAfterThrowingAdvice
@PropertySource
1、通过PropertiesLoaderUtils#loadProperties把文件加载到Properties对象中
2、把Properties对象封装为PropertySource对象
3、把PropertySource对象添加到environment环境变量中
@ImportResource
利用XmlBeanDefintionReader解析BeanDefinition
@EnableTransactionManagemen
@EnableTransactionManagement类上包含了注解@Import(TransactionManagementConfigurationSelector.class)
TransactionManagementConfigurationSelector类导入了AutoProxyRegistrar和ProxyTransactionManagementConfiguration
AutoProxyRegistrar注册了InfrastructureAdvisorAutoProxyCreator的BeanDefinition
ProxyTransactionManagementConfiguration注册了
BeanFactoryTransactionAttributeSourceAdvisor
TransactionInterceptor
TransactionAttributeSource(AnnotationTransactionAttributeSource)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。