@Autowired注解


@Autowired 注解用法

  • 應用於構造函數
  • 應用於setter方法
  • 應用於具有任意名稱和多個參數的方法
  • 應用於字段,或者將其與構造函數混合
  • 將 @Autowired 注釋添加到需要該類型數組的字段或方法,則 Spring 會從ApplicationContext 中搜尋符合指定類型的所有 bean
public class MovieRecommender {
    @Autowired
    private MovieCatalog[] movieCatalogs;
    // ...
}

// set和map類型的
public class MovieRecommender {
    private Set<MovieCatalog> movieCatalogs;
    private Map<String, MovieCatalog> movieCatalogs;
    @Autowired
    public void setMovieCatalogs(Set<MovieCatalog> movieCatalogs) {
        this.movieCatalogs = movieCatalogs;
    }
    @Autowired
    public void setMovieCatalogs(Map<String, MovieCatalog> movieCatalogs) {
        this.movieCatalogs = movieCatalogs;
    }
    // ...
}

@Autowired 注解的作用

這個注解是屬於 Spring 的容器配置的一個注解,與它同屬容器配置的注解還有:@Required, @Primary, @Qualifier 等等。@Autowired 注解是一個用於容器(container)配置的注解。

直接從字面意思來看,@autowired 注解來源於英文單詞 autowire,這個單詞的意思是自動裝配的意思。自動裝配又是什么意思?這個詞語本來的意思是指的一些工業上的用機器代替人口,自動將一些需要完成的組裝任務,或者別的一些任務完成。而在 Spring 的世界當中,自動裝配指的就是使用將 Spring 容器中的 bean 自動的和我們需要這個 bean 的類組裝在一起。

@Autowired 注解的實現

Java 的注解實現的核心技術是反射;
在 Spring 源代碼當中,Autowired 注解位於包 org.springframework.beans.factory.annotation 之中, Spring 對 autowire 注解的實現邏輯位於該包下的類:AutowiredAnnotationBeanPostProcessor 之中;
使用 @Autowired 注入的 bean 對於目標類來說,從代碼結構上來講也就是一個普通的成員變量,@Autowired 和 Spring 一起工作,通過反射為這個成員變量賦值,也就是將其賦為期望的類實例。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM