🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] <br/> <br/> > ### `alias` * `alias` 的中文意思是“别名”,在 `Spring `中,我们可以使用 `alias `标签给` bean` 起个别名。 <br/> > ### ` autowire` * 自动注入 <br/> > ### `FactoryBean` * `FactoryBean` 是一个接口,可以通过实现`getObject()`自己创建`bean`,该`bean`也是由`IOC`管理,相当于具体创建`bean`的过程由用户自己创建。 ``` public class HelloFactoryBean implements FactoryBean<Hello> { @Override public Hello getObject() throws Exception { Hello hello = new Hello(); hello.setContent("hello"); return hello; } @Override public Class<?> getObjectType() { return Hello.class; } @Override public boolean isSingleton() { return true; } } ``` <br/> > ### 实现 `ApplicationContextAware `接口 * `ApplicationContextAware`也是`Spring`提供的拓展性接口,可以让我们拿到 `ApplicationContext`实例,然后我们可以利用这个实例做一些bean的信息获取。 ``` public class NewsProvider implements ApplicationContextAware { private ApplicationContext applicationContext; private News news; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } /** 每次都从 applicationContext 中获取一个新的 bean */ public News getNews() { return applicationContext.getBean("news", News.class); } public void setNews(News news) { this.news = news; } } ``` <br/> > ### `DependsOn` * 如某个 `bean` 并不直接依赖于其他 `bean`,但又需要其他 `bean` 先实例化好,这个时候就需要使用 `DependsOn` 特性 <br/> > ### `BeanPostProcessor` * `BeanPostProcessor` 是 `Spring` 框架的一个扩展点,通过实现 `BeanPostProcessor` 接口,我们就可插手` bean` 实例化的过程。比如大家熟悉的` AOP` 就是在 `bean` 实例后期间将切面逻辑织入 `bean `实例中的,`AOP` 也正是通过 `BeanPostProcessor` 和` IOC `容器建立起了联系。 * `BeanFactoryPostProcessor`,用户可以通过这个拓展点插手容器启动的过程。 *** > ### 参考 #### [Spring IOC 容器源码分析系列文章导读](http://www.tianxiaobo.com/2018/05/30/Spring-IOC-%E5%AE%B9%E5%99%A8%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0%E5%AF%BC%E8%AF%BB/)