zoukankan      html  css  js  c++  java
  • 第51周三

    今天看了一个方案同事反馈的文档并批注,本计划基本完成编码,因为同事请假耽误要延迟到明天进行。下午在使用一个service实例时出现问题,可能是spring bean加载顺序问题,网上搜索spring bean加载顺序如下:
    Spring装配Bean的过程   
    1. 实例化;  
    2. 设置属性值;  
    3. 如果实现了BeanNameAware接口,调用setBeanName设置Bean的ID或者Name;  
    4. 如果实现BeanFactoryAware接口,调用setBeanFactory 设置BeanFactory;  
    5. 如果实现ApplicationContextAware,调用setApplicationContext设置ApplicationContext  
    6. 调用BeanPostProcessor的预先初始化方法;  
    7. 调用InitializingBean的afterPropertiesSet()方法;  
    8. 调用定制init-method方法;  
    9. 调用BeanPostProcessor的后初始化方法;  


    Spring容器关闭过程   
    1. 调用DisposableBean的destroy();  
    2. 调用定制的destroy-method方法;

    多个Bean的先后顺序

    • 优先加载BeanPostProcessor的实现Bean
    • 按Bean文件和Bean的定义顺序装载(即使加载多个spring文件时存在id覆盖)
    • “设置属性值”(第2步)时,遇到ref,则在“实例化”(第1步)之后先加载ref的id对应的bean
    • AbstractFactoryBean的子类,在第6步之后,会调用createInstance方法,之后会调用getObjectType方法
    • BeanFactoryUtils类也会改变Bean的加载顺序
       
     



  • 相关阅读:
    Object-C,NSSet,不可变集合
    NYIST 860 又见01背包
    NYIST 1070 诡异的电梯【Ⅰ】
    HDU 1542 Atlantis
    HDU 4756 Install Air Conditioning
    CodeForces 362E Petya and Pipes
    HDU 4751 Divide Groups
    HDU 3081 Marriage Match II
    UVA 11404 Palindromic Subsequence
    UVALIVE 4256 Salesmen
  • 原文地址:https://www.cnblogs.com/doit8791/p/4170306.html
Copyright © 2011-2022 走看看