[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/)
- asD
- Java
- Java基础
- Java编译器
- 反射
- collection
- IO
- JDK
- HashMap
- ConcurrentHashMap
- LinkedHashMap
- TreeMap
- 阻塞队列
- java语法
- String.format()
- JVM
- JVM内存、对象、类
- JVM GC
- JVM监控
- 多线程
- 基础概念
- volatile
- synchronized
- wait_notify
- join
- lock
- ThreadLocal
- AQS
- 线程池
- Spring
- IOC
- 特性介绍
- getBean()
- creatBean()
- createBeanInstance()
- populateBean()
- AOP
- 基本概念
- Spring处理请求的过程
- 注解
- 微服务
- 服务注册与发现
- etcd
- zk
- 大数据
- Java_spark
- 基础知识
- Thrift
- hdfs
- 计算机网络
- OSI七层模型
- HTTP
- SSL
- 数据库
- Redis
- mysql
- mybatis
- sql
- 容器
- docker
- k8s
- nginx
- tomcat
- 数据结构/算法
- 排序算法
- 快排
- 插入排序
- 归并排序
- 堆排序
- 计算时间复杂度
- leetcode
- LRU缓存
- B/B+ 树
- 跳跃表
- 设计模式
- 单例模式
- 装饰者模式
- 工厂模式
- 运维
- git
- 前端
- thymeleaf
- 其他
- 代码规范
- work_project
- Interview