[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