spring自動裝配是什麼?spring自動裝配方式

2020-12-14 老男孩python學習

Spring是受歡迎的企業級Java應用程式開發框架,數以百萬的來自世界各地的開發人員都在使用 Spring 框架創建高性能、易於測試和可重用的代碼。

自動裝配是Spring框架的重要功能,是使用Spring滿足bean依賴的一種方式,Spring會在應用中為某個bean尋找其依賴的bean,Spring中bean有三種裝配機制,分別是:在xml中顯示配置、在java中顯示配置以及隱式的bean發現機制和自動裝配。

Spring自動化裝配可以藉助@Autowired屬性實現,以下是自動裝配@Autowired屬性的六個值的簡要介紹:

1. byName

從Spring環境中獲取目標對象時,目標對象中的屬性會根據名稱在整個Spring環境中查找標籤的id屬性值。如果有相同的,那麼獲取這個對象,實現關聯。

整個Spring環境:表示所有的spring配置文件中查找,那麼id不能有重複的。

2. byType

從Spring環境中獲取目標對象時,目標對象中的屬性會根據類型在整個spring環境中查找標籤的class屬性值。如果有相同的,那麼獲取這個對象,實現關聯。

缺點:如果存在多個相同類型的bean對象,會出錯。

如果屬性為單一類型的數據,那麼查找到多個關聯對象會發生錯誤。

如果屬性為數組或集合(泛型)類型,那麼查找到多個關聯對象不會發生異常。

3. constructor

使用構造方法完成對象注入,其實也是根據構造方法的參數類型進行對象查找,相當於採用byType的方式。

4. autodetect

自動選擇:如果對象沒有無參數的構造方法,那麼自動選擇constructor的自動裝配方式進行構造注入。如果對象含有無參數的構造方法,那麼自動選擇byType的自動裝配方式進行setter注入。

5. no

不支持自動裝配功能。

6. default

表示默認採用上一級標籤的自動裝配的取值。如果存在多個配置文件的話,那麼每一個配置文件的自動裝配方式都是獨立的。

自動裝配是Spring框架的重要功能,能顯著減少裝配的數量,因此在配置數量相當多時採用自動裝配,可以減少工作量,且自動裝配可以使配置與Java代碼同步更新,因此,在開發過程中建議採用自動裝配,在系統穩定時可改為顯性裝配的方式。

相關焦點

  • spring和spring boot常用註解及使用
    @Autowired它可以對類成員變量,方法及構造函數進行標註,完成自動裝配工作,可以消除set,get方法。11. @Resource其作用和@Autowired相似。所以如果使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byName自動注入策略。@Autowired是spring的註解,是spring2.5版本引入的,@Autowired只根據type進行注入,不會去匹配name。
  • Spring框架IOC和AOP簡介
    Spring注入是指在啟動Spring容器加載bean配置的時候,完成對變量的賦值行為,常用的倆種注入方式:設值注入和構造注入設值注入:構造注入:6、Spring Bean裝配(1)Bean的作用域◎single
  • 什麼?搞Java的你還不會Spring?一篇文章帶你掌握
    "35" p:cars-ref="cars"></bean>1自動裝配掌握了如何配置Bean之後,我們發現一個問題,就是Bean與Bean之間的關係都需要我們手動建立聯繫,為此,Spring提供了一種自動裝配Bean的方式,我們來了解一下
  • Spring常用註解——JAVA成長之路
    作用:調用無參構造創建一個bean對象,並把對象存入spring的IOC容器,交由spring容器進行管理。相當於在xml中配置一個bean。屬性:value:指定bean的id。注意:當我們使用註解配置方法時,如果方法有參數,spring框架會去容器中查找有沒有可用的bean對象,查找的方式和Autowired註解的作用是一樣的。
  • 阿里P8架構師整理總結:Spring+SpringBoot+SpringCloud技術文檔
    很多研發人員把spring看作心目中最好的java項目,沒有之一。所以這是重點也是難點,工作中必須會,面試時肯定考。今天給大家介紹的內容主要包括三大部分:spring實戰(第4版)、spring boot2精髓、Spring Cloud 微服務架構進階,希望大家能夠喜歡!!!spring實戰(第4版)本文分為4部分。
  • zlt-mp v3.5.0 發布,基於 Spring Cloud Alibaba 的微服務平臺
    工程 支持xpack安全認證 支持最新的es7.x版本 支持自定義連接池參數 優化搜索中心search-center客戶端由TransportClient改為HighLevelClient 優化公共starter的bean加載方式,避免依賴的工程因包路徑不一致而導致加載不了的情況
  • Spring的幾個經典常見面試題,必須要會!
    (2)最直觀的表達就是,IOC讓對象的創建不用去new了,可以由spring自動生產,使用java的反射機制,根據配置文件在運行時動態的去創建對象以及管理對象,並調用對象的方法的。(3)Spring的IOC有三種注入方式 :構造器注入、setter方法注入、根據註解注入。
  • Spring Boot中的@EnableAutoConfiguration 是如何處理的?
    DeferredImportSelector保證在所有@Configuration加載之後執行,也就是說,如果有相關配置類已加載,則可以跳過自動裝配類。DeferredImportSelector是如何保證在@Configuration bean加載之後執行的呢???
  • Spring Boot 中的 @EnableAutoConfiguration 是如何處理的?
    DeferredImportSelector保證在所有@Configuration加載之後執行,也就說,如果有相關配置類已加載,則可以跳過自動裝配類。DeferredImportSelector是如何保證在@Configuration bean加載之後執行的呢???
  • 詳解|Spring Boot 最核心的 3 個註解詳解
    前言Spring Boot 最大的特點是無需 XML 配置文件,能夠實現自動裝配,並進行全自動化的jar包配置。Spring Boot 是微服務的核心,其Spring Cloud 是基於Spring Boot 為基礎的。其框架是用來簡化Spring應用的初始搭建和開發過程,即,簡化了框架,便捷了開發。
  • spring微服務中的那點事
    自動裝配@Autowired:即通過註解自動裝配,默認方式是byType.@Resource:即通過註解自動裝配,默認方式是byName.Autowired:即通過註解自動裝配,默認方式是byType.
  • 【Java開發必看】Spring基礎知識匯總
    Spring容器查找容器中的全部Bean,如果正好有一個Bean類型與setter方法的形參類型匹配,就自動注入這個Bean;如果找到多個這樣的Bean,就拋出一個異常;如果沒有找到這樣的Bean,則什麼都不會發生,setter方法不會被調用;constructor: 與byType類似,區別是用於自動匹配構造器的參數。
  • 69個Java Spring的面試題及答案 終極版!
    32.什麼是bean自動裝配?Spring容器可以自動配置相互協作beans之間的關聯關係。這意味著Spring可以自動配置一個bean和其他協作bean之間的關係,通過檢查BeanFactory 的內容裡沒有使用和< property>元素。33.解釋自動裝配的各種模式?
  • 帶有Angular和Spring App的Google Recaptcha示例
    請注意下面給出的代碼中的一些內容:Google Recaptcha網址,例如https://www.google.com/recaptcha/api/siteverify谷歌googleRecaptchaSecretKey是自動裝配的。
  • Spring 和 Spring Boot 之間到底有啥區別?
    概述對於 Spring和 SpringBoot到底有什麼區別,我聽到了很多答案,剛開始邁入學習 SpringBoot的我當時也是一頭霧水,隨著經驗的積累、我慢慢理解了這兩個框架到底有什麼區別,相信對於用了 SpringBoot很久的同學來說,還不是很理解 SpringBoot到底和 Spring有什麼區別,看完文章中的比較,或許你有了不同的答案和看法!
  • 自動手持式螺絲機設備廠家對小規格LED投光燈進行裝配
    針對規格為300-500mm左右的是可以直接使用桌面式自動鎖螺絲機來進行自動化批量鎖螺絲並實現高效率作業,淘汰傳統人工以人多加工為主的生產場景。逐漸使用自動化設備不僅省時省人工,每月還能省下不少成本呢!下面趕緊都來了解這強大的螺絲機到底具備著什麼優良性能吧。
  • Spring Boot 和 Spring 到底有啥區別?
    ,我聽到了很多答案,剛開始邁入學習SpringBoot的我當時也是一頭霧水隨著經驗的積累、我慢慢理解了這兩個框架到底有什麼區別。;/version></dependency>在進行構建期間,所有其他依賴項將自動添加到項目中。
  • Spring Boot 的單元測試和集成測試
    在未使用嵌套的 @Configuration 註解,且未顯式指定相關類時,自動搜索 @SpringBootConfiguration。允許使用 Properties 來自定義 Environment 屬性。對不同的 Web 環境模式提供支持,包括啟動在已定義或隨機埠上的完全運行的 Web 伺服器的功能。
  • Spring Boot 2.X 實戰--SQL 資料庫(MyBatis)
    在開篇介紹《什麼是 Spring Boot》中提到,Spring Boot 一大特色就是自動配置(AutoConfiguration),為許多第三方開發庫提供了幾乎可以零配置的開箱即用的能力,如 MyBatis。
  • 那些讓你愛不釋手的 Spring 代碼技巧
    public class A {}@Import(A.class)@Configurationpublic class TestConfiguration {}通過@Import註解引入A類,spring就能自動實例化A對象,然後在需要使用的地方通過@Autowired