bash
@Configuration 注意由ConfigurationClassPostProcessor来处理
ConfigurationClassPostProcessor执行这个后置处理
ConfigurationClassParser.parse执行这个方法里面会解析很多注解。
1、@Component 对于Component也是一样递归调用parse方法,一层层解析
2、@PropertySources
3、@PropertySource
4、@ComponentScans
5、@ComponentScan 执行ConfigurationClassPostProcessor后置处理器时,判断配置类是否包含@ComponentScan注解,ComponentScan注解里面就包含很多属性,把扫描出来的类,转成BD,并且扫描出来的每个类都执行一次parse方法,因为扫描出来的类上面可能也包含了@ComponentScan等多个注解
6、@Import 例如:ImportBeanDefinitionRegistrar、ImportSelector
7、@ImportResource
8、@Bean
java
@Service 其实只是包装了下@Component所以处理逻辑和@Component是一样的。
@Autowired 处理类AutowiredAnnotationBeanPostProcessor
@Resource 处理类CommonAnnotationBeanPostProcessor
@EnableTransactionManagement 开启事务
@Transactional 由切面里面的切点来扫码是否添加事物
关于切面相关的可以点这
@Async异步处理相关注解《@Async-源码分析》
@Aspect
@EnableAsync 开启切面
切面相关可以看这个
@MapperScan
通过导入Import导入MapperScannerRegistrar类,MapperScannerRegistrar实现了ImportBeanDefinitionRegistrar接口,通过ClassPathMapperScanner类扫描@MapperScan配置的路径,找到所有的Mapper.java类,转成DB,并设置BeanClass类型是MapperFactoryBean.class,注册到Spring里面去。
@Controller
@RequestMapping
AOP代理对象的注解有
@Configuration
@Async
@Transactional
@Aspect