1.監聽器Listener(點此連接,執行流程帶源碼分析及demo)
2.bean定義的后置處理器(BeanDefinitionRegistryPostProcessor)和bean工廠的后置處理器(BeanFactoryPostProcessor):詳見Spring IOC(2)----如何注冊bean定義(點此連接,帶源碼分析)的第9點和10點
3.Aware接口:主要用於給對象注入某個屬性的值。下層有多個擴展接口
BeanNameAware 實現setBeanName()方法,注入該bean在容器的name
ApplicationContextAware 實現setApplicationContext() 可以為bean注入上下文對象ApplicationContext
BeanFactoryAware 實現setBeanFactory(),可以注入容器工廠
BeanClassLoaderAware 注入類加載器
4.BeanPostProcessor:bean的后置處理器,初始化前后調用,有前后兩個方法postProcessBeforeInitialization,postProcessAfterInitialization
5.InitializingBean:實現afterPropertiesSet()方法
看下spring IOC源碼中這三個接口調用順序AbstractAutowireCapableBeanFactory#initializeBean()中:
這里的Aware接口只會調用這三種:
------------------------------
eureka整合進spring是通過lifecycle接口
nacos整合進spring是通過applicationListener接口
ribbon是通過攔截器
feign和mybatis一樣都是通過factorybean