1. 程式人生 > 實用技巧 >Aware 介面

Aware 介面

Aware 介面,從字面上理解就是感知捕獲。單純的一個 Bean 是沒有知覺的。

之所以 UserDao 能夠注入到 UserService ,有一個前提,就是它兩個都是被 Spring
容器管理的。如果直接 new 一個 UserService,這是沒用的,因為 UserService 沒有被 Spring 容器管理,所以也不會給它裡邊注入Bean。

在實際開發中,我們可能會遇到一些類,需要獲取到容器的詳細資訊,那就可以通過 Aware 介面來實現。

Aware 是一個空介面,有很多實現類

這些實現的介面,有一些公共的特徵:

  1. 都是以Aware結尾
  2. 都是繼承Aware
  3. 介面內定義了一個set方法

每一個子介面均提供了一個 set 方法,方法的引數就是當前 Bean 需要感知的內容,因此我們需要在 Bean 中宣告相關的成員變數來接受這個引數。接收到這個引數後,就可以通過這個引數獲取到容器的詳細資訊了

@Component
public class SayHello implements ApplicationContextAware {
    private ApplicationContext applicationContext;
    public String sayHello(String name) {
        //判斷容器中是否存在某個 Bean
        boolean userDao = applicationContext.containsBean("userDao333");
        System.out.println(userDao);
        return "hello " + name;
    }
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
}