美文网首页
spring注解之

spring注解之

作者: 那谁319 | 来源:发表于2019-07-04 23:07 被阅读0次
    • 在我们使用Spring的时候,基本上很少使用标签配置的方式来声明bean了,都是使用注解的方式来声明bean,在使用注解之前,我们要首先配置一下<context:component-scan/>标签。

    <context:component-scan/>标签解析

    • 对应的NamespaceHandler实现类为ContextNamespaceHandler
      • 初始化的解析器为ComponentScanBeanDefinitionParser


        image.png

    ComponentScanBeanDefinitionParser解析器

    • ComponentScanBeanDefinitionParser解析器在Spring 初始化解析xml文件时,会执行其parse方法(方法如下图)。
      • 1、确定需要扫描的包路径
      • 2、创建扫描类ClassPathBeanDefinitionScanner
      • 3、扫描包路径下的class文件
      • 4、注册一些注解相关的PostProcessor,并且注册BeanDefinition后的事件通知。


        image.png
    image.png
    • 获取annotation-config属性,默认为true
    • 如果annotation-config属性为true,注册一些注解相关的PostProcessor
    image.png
    • ConfigurationClassPostProcessor
      • 对@Configuration、@Bean、@Import、@Component、@ComponentScan、@ImportResource等注解的支持
    • AutowiredAnnotationBeanPostProcessor
      • 对@Autowire和@Value注解的支持
    • RequiredAnnotationBeanPostProcessor
      • 对@Required注解的支持
    • CommonAnnotationBeanPostProcessor
    • 对@Resource、@PostConstruct、@PreDestroy注解的支持

    *注意:这里注册了一些PostProcessor,用于对各种注解的支持,这里只是注册了处理器,并不会真正的解析注解,我们已经知道BeanFactoryPostProcessor和BeanPostProcessor的作用,AutowiredAnnotationBeanPostProcessor、RequiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor都实现了BeanPostProcessor,所以会在bean创建的期间被调用,而ConfigurationClassPostProcessor实现了BeanFactoryPostProcessor,所以它会在bean创建之前被调用。

    相关文章

      网友评论

          本文标题:spring注解之

          本文链接:https://www.haomeiwen.com/subject/uwcpcctx.html