日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring精华问答 | Spring Bean的自动装配是怎么回事?

發(fā)布時間:2024/9/27 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring精华问答 | Spring Bean的自动装配是怎么回事? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

戳藍(lán)字“CSDN云計算”關(guān)注我們哦!


Spring框架是由于軟件開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用的是基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合性角度而言,絕大部分Java應(yīng)用都可以從Spring中受益。今天,就讓我們來看看關(guān)于Spring更加有深度的問題吧。


1

? Q:如何向Spring Bean中注入一個Java.util.Properties?


A:第一種方法是使用如下面代碼所示的<props>?標(biāo)簽:也可用”util:”命名空間來從properties文件中創(chuàng)建出一個propertiesbean,然后利用setter方法注入bean的引用。


2

Q:Spring Bean的自動裝配是怎么回事?


A:在Spring框架中,在配置文件中設(shè)定bean的依賴關(guān)系是一個很好的機(jī)制,Spring容器還可以自動裝配合作關(guān)系bean之間的關(guān)聯(lián)關(guān)系。這意味著Spring可以通過向Bean Factory中注入的方式自動搞定bean之間的依賴關(guān)系。自動裝配可以設(shè)置在每個bean上,也可以設(shè)定在特定的bean上。

下面的XML配置文件表明了如何根據(jù)名稱將一個bean設(shè)置為自動裝配:

1

<bean id="employeeDAO" class="com.howtodoinjava.EmployeeDAOImpl" autowire="byName" />

除了bean配置文件中提供的自動裝配模式,還可以使用@Autowired注解來自動裝配指定的bean。在使用@Autowired注解之前需要在按照如下的配置方式在Spring配置文件進(jìn)行配置才可以使用。


1

<context:annotation-config />


也可以通過在配置文件中配置AutowiredAnnotationBeanPostProcessor?達(dá)到相同的效果。


1

<bean class ="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

配置好以后就可以使用@Autowired來標(biāo)注了。


1

2

3

4

@Autowired

public EmployeeDAOImpl ( EmployeeManager manager ) {

????this.manager = manager;

}


3

? ? ? ?Q:自動裝配模式有什么區(qū)別?


? ? ? ?A:在Spring框架中共有5種自動裝配,讓我們逐一分析。


no:這是Spring框架的默認(rèn)設(shè)置,在該設(shè)置下自動裝配是關(guān)閉的,開發(fā)者需要自行在bean定義中用標(biāo)簽明確的設(shè)置依賴關(guān)系。


byName:該選項可以根據(jù)bean名稱設(shè)置依賴關(guān)系。當(dāng)向一個bean中自動裝配一個屬性時,容器將根據(jù)bean的名稱自動在在配置文件中查詢一個匹配的bean。如果找到的話,就裝配這個屬性,如果沒找到的話就報錯。


byType:該選項可以根據(jù)bean類型設(shè)置依賴關(guān)系。當(dāng)向一個bean中自動裝配一個屬性時,容器將根據(jù)bean的類型自動在在配置文件中查詢一個匹配的bean。如果找到的話,就裝配這個屬性,如果沒找到的話就報錯。


constructor:造器的自動裝配和byType模式類似,但是僅僅適用于與有構(gòu)造器相同參數(shù)的bean,如果在容器中沒有找到與構(gòu)造器參數(shù)類型一致的bean,那么將會拋出異常。


autodetect:該模式自動探測使用構(gòu)造器自動裝配或者byType自動裝配。首先,首先會嘗試找合適的帶參數(shù)的構(gòu)造器,如果找到的話就是用構(gòu)造器自動裝配,如果在bean內(nèi)部沒有找到相應(yīng)的構(gòu)造器或者是無參構(gòu)造器,容器就會自動選擇byTpe的自動裝配方式。


4

Q:如何開啟基于注解的自動裝配?


A:要使用?@Autowired,需要注冊?AutowiredAnnotationBeanPostProcessor,可以有以下兩種方式來實現(xiàn):

1、引入配置文件中的<bean>下引入?<context:annotation-config>

1

2

3

<beans>

????<context:annotation-config />

</beans>

2、在bean配置文件中直接引入AutowiredAnnotationBeanPostProcessor


1

2

3

<beans>

????<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

</beans>


??Q:請舉例解釋@Autowired注解?


A:@Autowired注解對自動裝配何時何處被實現(xiàn)提供了更多細(xì)粒度的控制。@Autowired注解可以像@Required注解、構(gòu)造器一樣被用于在bean的設(shè)值方法上自動裝配bean的屬性,一個參數(shù)或者帶有任意名稱或帶有多個參數(shù)的方法。

比如,可以在設(shè)值方法上使用@Autowired注解來替代配置文件中的?<property>元素。當(dāng)Spring容器在setter方法上找到@Autowired注解時,會嘗試用byType?自動裝配。

當(dāng)然我們也可以在構(gòu)造方法上使用@Autowired?注解。帶有@Autowired?注解的構(gòu)造方法意味著在創(chuàng)建一個bean時將會被自動裝配,即便在配置文件中使用<constructor-arg>?元素。

1

2

3

4

5

6

7

8

9

10

11

12

13

public class TextEditor {

???private SpellChecker spellChecker;

?

???@Autowired

???public TextEditor(SpellChecker spellChecker){

??????System.out.println("Inside TextEditor constructor." );

??????this.spellChecker = spellChecker;

???}

?

???public void spellCheck(){

??????spellChecker.checkSpelling();

???}

}

下面是沒有構(gòu)造參數(shù)的配置方式:


1

2

3

4

5

6

7

8

9

10

11

12

13

<beans>

?

???<context:annotation-config/>

?

???<!-- Definition for textEditor bean without constructor-arg? -->

???<bean id="textEditor" class="com.howtodoinjava.TextEditor">

???</bean>

?

???<!-- Definition for spellChecker bean -->

???<bean id="spellChecker" class="com.howtodoinjava.SpellChecker">

???</bean>

?

</beans>



小伙伴們沖鴨,后臺留言區(qū)等著你!

關(guān)于Spring,今天你學(xué)到了什么?還有哪些不懂的?除此還對哪些話題感興趣?快來留言區(qū)打卡啦!留言方式:打開第XX天,答:……

同時歡迎大家搜集更多問題,投稿給我們!風(fēng)里雨里留言區(qū)里等你~



福利

掃描添加小編微信,備注“姓名+公司職位”,加入【云計算學(xué)習(xí)交流群】,和志同道合的朋友們共同打卡學(xué)習(xí)!



推薦閱讀:

  • 圖解分布式架構(gòu)的發(fā)展和演進(jìn) | 技術(shù)干貨

  • Docker 系列學(xué)習(xí)文章 | 什么是容器云?

  • 任正非:華為海思芯片不是“備胎”!

  • 揭秘清華 AI 學(xué)堂班:姚期智擔(dān)任首席教授,2019 年首批招收 30 人

  • Google Android 向華為“閉源”!華為手機(jī)迎來至暗時刻!

  • "兩年前我對區(qū)塊鏈的了解為零, 兩年后我成了工程師" 我是如何得到第一份工作的?

  • 《使女的故事》大火,AI是背后最大推手?


真香,朕在看了! 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Spring精华问答 | Spring Bean的自动装配是怎么回事?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。