zoukankan      html  css  js  c++  java
  • Bean笔记

    为什么需要Bean , 因为 Aop 需要。

    顺序

    InstantiationAwareBeanPostProcessor , BeanPostProcessor 每个Bean都会执行这两个组件的相关方法.

    这两个组件的执行顺序

    1. InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation
    2. InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation
    3. InstantiationAwareBeanPostProcessor.postProcessPropertyValues
    4. InstantiationAwareBeanPostProcessor.postProcessBeforeInitialization
    5. BeanPostProcessor.postProcessBeforeInitialization
    6. InstantiationAwareBeanPostProcessor.postProcessAfterInitialization
    7. BeanPostProcessor.postProcessAfterInitialization
    

    以下Bean 在3,4之间执行:

        * ApplicationEventPublisherAware
        * MessageSourceAware
        * ApplicationContextAware
        * BeanNameAware
        * BeanClassLoaderAware
        * BeanFactoryAware
        * EnvironmentAware
        * EmbeddedValueResolverAware
    
    即: 执行顺序:
        3. InstantiationAwareBeanPostProcessor.postProcessPropertyValues
        ** (以上bean) **
        4. InstantiationAwareBeanPostProcessor.postProcessBeforeInitialization
    

    InitializingBean 的执行顺序:

    5. BeanPostProcessor.postProcessBeforeInitialization
    **InitializingBean.@PostConstruct**
    **InitializingBean.afterPropertiesSet**
    6.InstantiationAwareBeanPostProcessor.postProcessAfterInitialization
    

    自动执行原则

    启动类 包名 包含 Bean包的包名. 则 Bean 自动加载.
    否则:
    1. 需要使用 ComponentScan(包名) 手动加载 .
    2. 使用 Import 手动加载单个Bean.

    ApplicationListener

    Bean生命周期,执行完之后, 会执行 ApplicationListener 相当方法, 依次执行:

    ApplicationPreparedEvent : PreInit
    AnnotationConfigServletWebServerApplicationContext
    ServletWebServerInitializedEvent
    ContextRefreshedEvent : Init
    ApplicationStartedEvent : Started

    底层收集器

    如: Json 序列化, 序列化. 底层有方法: ToJson , FromJson .
    每个上层可以注册自定义实体序列化方法, 如 ObjectId

    底层: 约定, 收集上层定义的Bean:
    1. Bean 实现 JsonSerializer 接口. 表示序列化实现.
    2. Bean 实现 JsonDeserializer 接口. 表示反序列化实现.

    在 BeanPostProcessor.postProcessAfterInitialization 中收集.

  • 相关阅读:
    【解决】Word中插入图片后变模糊(失真)
    【解决】Windows文件夹没有边框
    【解决】电脑字体突然显示不正常
    NLP与深度学习(六)BERT模型的使用
    NLP与深度学习(五)BERT预训练模型
    NLP与深度学习(四)Transformer模型
    NLP与深度学习(三)Seq2Seq模型与Attention机制
    用ByteArrayOutputStream解决IO流乱码问题
    在vue3中使用vue-property-decorator报错
    python之批量打印网页为pdf文件(二)
  • 原文地址:https://www.cnblogs.com/newsea/p/9284521.html
Copyright © 2011-2022 走看看