3.12畢設

付治齐吖發表於2024-03-16

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;

  }

}