Spring中的可扩展接口
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