亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring自動(dòng)裝配@Autowired教程

 更新時(shí)間:2023年01月19日 10:52:32   作者:Java知識(shí)庫(kù)  
@Autowired注解是Spring中非常重要且常見(jiàn)的,接下來(lái)就簡(jiǎn)要的介紹一下它的用法。@Autowired默認(rèn)是通過(guò)set方法,按照類(lèi)型自動(dòng)裝配JavaBean,set方法可省略不寫(xiě),它主要是修飾在成員變量上

今天來(lái)跟大家聊聊簡(jiǎn)單聊聊@Autowired,Autowired翻譯過(guò)來(lái)為自動(dòng)裝配,也就是自動(dòng)給Bean對(duì)象的屬性賦值。

@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, 
         ElementType.PARAMETER, ElementType.FIELD, 
         ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {
	/**
	 * Declares whether the annotated dependency is required.
	 * <p>Defaults to {@code true}.
	 */
	boolean required() default true;
}

以上是@Autowired的定義,重點(diǎn)看 @Target,我們發(fā)現(xiàn)@Autowired可以寫(xiě)在:

  • ElementType.CONSTRUCTOR:表示可以寫(xiě)在構(gòu)造方法上
  • ElementType.METHOD:表示可以寫(xiě)在普通方法上
  • ElementType.PARAMETER:表示可以寫(xiě)在方法參數(shù)前
  • ElementType.FIELD:表示可以寫(xiě)在屬性上
  • ElementType.ANNOTATION_TYPE:表示可以寫(xiě)在其他注解上

寫(xiě)在構(gòu)造方法上

對(duì)于@Autowired寫(xiě)在構(gòu)造方法上的情況,跟Spring選擇構(gòu)造方法的邏輯有關(guān),一個(gè)類(lèi)中是不是有多個(gè)構(gòu)造方法,是不是加了@Autowired注解,是不是有默認(rèn)構(gòu)造方法,跟構(gòu)造方法參數(shù)類(lèi)型和個(gè)數(shù)都有關(guān)系,后面單獨(dú)來(lái)介紹。

寫(xiě)在普通方法上

對(duì)于@Autowired寫(xiě)在普通方法上的情況,我們通常寫(xiě)的setter方法其實(shí)就是一個(gè)普通的setter方法,那非setter方法上加@Autowired會(huì)有作用嗎?

比如:

@Component
public class UserService {
	@Autowired
	public void test(OrderService orderService) {
		System.out.println(orderService);
	}
}

這個(gè)test方法會(huì)被Spring自動(dòng)調(diào)用到,并且能打印出OrderService對(duì)應(yīng)的Bean對(duì)象。

寫(xiě)在方法參數(shù)前

把@Autowired寫(xiě)在參數(shù)前沒(méi)有多大意義,只在spring-test中有去處理這種情況,源碼注釋原文:

Although @Autowired can technically be declared on individual method or constructor parameters since Spring Framework 5.0, most parts of the framework ignore such declarations. The only part of the core Spring Framework that actively supports autowired parameters is the JUnit Jupiter support in the spring-test module

寫(xiě)在屬性上

這種情況不用多說(shuō)了,值得注意的是,默認(rèn)情況下,因?yàn)锧Autowired中的required屬性為true,表示強(qiáng)制依賴(lài),如果更加某個(gè)屬性找不到所依賴(lài)的Bean是不會(huì)賦null值的,而是會(huì)報(bào)錯(cuò),如果把required屬性設(shè)置為false,則會(huì)賦null值。

寫(xiě)在其他注解上

比如我們可以自定義要給注解:

@Autowired
@Retention(RetentionPolicy.RUNTIME)
public @interface HoellerAutowired {
}

@HoellerAutowired和@Autowired是等價(jià)的,能用@Autowired的地方都可以用@HoellerAutowired代替。

到此這篇關(guān)于Spring自動(dòng)裝配@Autowired教程的文章就介紹到這了,更多相關(guān)Spring @Autowired內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談SpringBoot資源初始化加載的幾種方式

    淺談SpringBoot資源初始化加載的幾種方式

    在平時(shí)的業(yè)務(wù)模塊開(kāi)發(fā)過(guò)程中,難免會(huì)需要做一些全局的任務(wù)、緩存、線程等等的初始化工作,那么如何解決這個(gè)問(wèn)題呢?本文就來(lái)介紹一下,感興趣的可以了解一下
    2021-07-07
  • 淺談普通for循環(huán)遍歷LinkedList弊端

    淺談普通for循環(huán)遍歷LinkedList弊端

    下面小編就為大家?guī)?lái)一篇淺談普通for循環(huán)遍歷LinkedList弊端。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • Java讀取txt文件的方法

    Java讀取txt文件的方法

    這篇文章主要為大家詳細(xì)介紹了Java讀取txt文件的方法,分享Java讀取txt文件代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Spring-Boot 訪問(wèn)外部接口的方案總結(jié)

    Spring-Boot 訪問(wèn)外部接口的方案總結(jié)

    在Spring-Boot項(xiàng)目開(kāi)發(fā)中,存在著本模塊的代碼需要訪問(wèn)外面模塊接口,或外部url鏈接的需求,針對(duì)這一需求目前存在著三種解決方案,下面將對(duì)這三種方案進(jìn)行整理和說(shuō)明,對(duì)Spring-Boot 訪問(wèn)外部接口方案感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • 基于Spring + Spring MVC + Mybatis 高性能web構(gòu)建實(shí)例詳解

    基于Spring + Spring MVC + Mybatis 高性能web構(gòu)建實(shí)例詳解

    這篇文章主要介紹了基于Spring + Spring MVC + Mybatis 高性能web構(gòu)建實(shí)例詳解,需要的朋友可以參考下
    2017-04-04
  • 將Java程序與數(shù)據(jù)庫(kù)進(jìn)行連接的操作方法

    將Java程序與數(shù)據(jù)庫(kù)進(jìn)行連接的操作方法

    這篇文章主要介紹了將Java程序與數(shù)據(jù)庫(kù)進(jìn)行連接的操作方法,是Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • 詳解hashCode()和equals()的本質(zhì)區(qū)別和聯(lián)系

    詳解hashCode()和equals()的本質(zhì)區(qū)別和聯(lián)系

    這篇文章主要介紹了詳解hashCode()和equals()的本質(zhì)區(qū)別和聯(lián)系,本文先對(duì)兩種方法作了介紹,然后對(duì)二者聯(lián)系進(jìn)行分析,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-09-09
  • Java并發(fā)編程中的CompletableFuture使用詳解

    Java并發(fā)編程中的CompletableFuture使用詳解

    這篇文章主要介紹了Java并發(fā)編程中的CompletableFuture使用詳解,Future接口定義了操作異步任務(wù)執(zhí)行的一些方法,如獲取異步任務(wù)執(zhí)行的結(jié)果、取消任務(wù)的執(zhí)行、判斷任務(wù)是否被取消,判斷任務(wù)是否執(zhí)行完畢等,需要的朋友可以參考下
    2023-12-12
  • Java實(shí)現(xiàn)FTP文件的上傳和下載功能的實(shí)例代碼

    Java實(shí)現(xiàn)FTP文件的上傳和下載功能的實(shí)例代碼

    FTP 是File Transfer Protocol(文件傳輸協(xié)議)的英文簡(jiǎn)稱(chēng),而中文簡(jiǎn)稱(chēng)為“文傳協(xié)議”。接下來(lái)通過(guò)本文給大家實(shí)例講解Java實(shí)現(xiàn)FTP文件的上傳和下載功能,需要的的朋友一起看看吧
    2016-11-11
  • Spring注解之@Conditional使用解析

    Spring注解之@Conditional使用解析

    這篇文章主要介紹了Spring注解之@Conditional使用解析,@Conditional注解可以說(shuō)是SpringBoot的條件注解,表示組件只有在所有指定條件都匹配時(shí)才有資格注冊(cè),條件是可以在 bean 定義注冊(cè)之前??以編程方式確定的任何狀態(tài),需要的朋友可以參考下
    2024-01-01

最新評(píng)論