国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring裝配Bean之用Java代碼安裝配置bean詳解

Spring裝配Bean之用Java代碼安裝配置bean詳解

2021-01-23 12:45wuxiwei Java教程

這篇文章主要給大家介紹了關于Spring裝配Bean之用Java代碼安裝配置bean的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用spring具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧。

前言

本文主要給大家介紹了關于Spring之利用Java代碼安裝配置bean的相關內容,盡管通過組件掃描和自動裝配實現Spring的自動化配置很方便也推薦,但是有時候自動配置的方式實現不了,就需要明確顯示的配置Spring。比如說,想要將第三方庫中的組件裝配到自己的應用中,這樣的情況下,是沒辦法在它的類上添加 @Compnent和 @Autowired注解的。

在這種情況下,需要使用顯示裝配的方式,可以分別通過Java和XML實現,推薦使用Java的方式,因為更加強大,類型安全并且重構友好,因為就和我們應用所寫的Java代碼一樣。但是雖然JavaConfig和其他的java代碼沒有區別,但是在概念上是不同的。所以JavaConfig不應該出現業務邏輯的代碼,并建議放在單獨的包中,做隔離。

創建配置類

在之前,看到過JavaConfig,我們再看一下:

?
1
2
3
4
5
6
7
package soundsystem;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class CDPlayerConfig {
 
}

創建javaConfig類的關鍵在于為其添加 @Configuration注解,@Configuration注解表明這個類是一個配置類,該類應該包含Spring上下文中如何創建bean的細節。之前我們都是依賴組件掃描來發現Spring應該創建的bean。盡管可以同時使用組件掃描和顯示配置,但是現在我們去掉了 @CompnentScan注解,現在的CDPlayerConfig類就沒有任何作用了。如果現在運行之前的測試類,就會失敗,并且出現BeanCreationException異常。

聲明簡單的bean

在JavaConfig中聲明bean,需要編寫一個方法,該方法會創建所需類型的實例,然后這個方法添加 @Bean注解。

?
1
2
3
4
@Bean
public CompactDisc sgtPeppers() {
 return new SgtPeppers();
}

@Bean注解會告訴Spring這個方法會返回一個對象,該對象要注冊為Spring應用上下文中的bean。

默認情況下,bean的ID與帶有 @Bean注解的方法名是一樣的,在上面的例子中,bean的ID將會是sgtPeppers。如果想設置不同的ID,那么可以重命名該方法,也可以通過name屬性指定一個不通的名字:

?
1
2
3
4
@Bean(name="lonelyHeartsClubBand")
public CompactDisc sgtPeppers() {
 return new SgtPeppers();
}

借助JavaConfig實現注入

前面聲明的CompactDisc很簡單,因為沒有其他依賴。但現在,我們需要聲明CDPlayer bean,它依賴于CompactDisc。

在javaConfig中裝配bean的最簡單方式就是引用創建bean的方法。

?
1
2
3
4
@Bean
public CDPlayer cdPlayer() {
 return new CDPlayer(sgtPeppers());
}

注意:看起來,CompactDisc是通過調用sgtPeppers()得到的,但情況并非完全如此。因為sgtPeppers()方法添加了 @Bean注解,Spring會攔截所有對它的調用,并確保直接返回該方法創建的bean,而不是每次都進行實際的調用。
假如引入另外一個CDPlayer bean,他和之前的那個bean完全一樣:

?
1
2
3
4
5
6
7
8
9
@Bean
public CDPlayer cdPlayer() {
 return new CDPlayer(sgtPeppers());
}
 
@Bean
public CDPlayer anotherCDPlayer() {
 return new CDPlayer(sgtPeppers());
}

如果sgtPeppers()的調用是實際的方法調用,那么每個CDPlayer實例都會有一個特有的SgtPeppers實例。如果是實際的CD播放器和CD光盤的話,很ok,物理上沒辦法共用一張CD光盤在兩個CD播放器上。

但是,在軟件中,我們完全是可以將同一個SgtPeppers實例注入到任意數量的其它的bean中。默認情況下,Spring的bean都是單例的,我們并沒有必要為第二個CDPlayer bean創建完全相同的SgtPeppers實例。

根本的問題在于,通過調用方法的方式來引入bean有點困惑,還有另外一種方式:

?
1
2
3
4
@Bean
public CDPlayer cdPlayer(CompactDisc compactDisc) {
 return new CDPlayer(compactDisc);
}

通過這種方式引入其它的bean通常是最佳的方式,因為Spring并不會要求將CompactDisc聲明放在同一個配置文件中,甚至不一定是JavaConfig中,可以將配置分布在XML、多個配置類以及自動掃描裝配的bean中。

另外,這里的CDPlayer的構造器實現了DI功能,但是我們完全可以根據需求實例化CDPlayer,比如想通過Setter方法注入CompactDisc的話,可以這樣:

?
1
2
3
4
5
6
@Bean
public CDPlayer cdPlayer(CompactDisc compactDisc) {
 CDPlayer cdPlayer = new CDPlayer(compactDisc);
 cdPlayer.setCompactDisc = compactDisc;
 return cdPlayer;
}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.cnblogs.com/wxw16/p/7704471.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品1区2区 | 依人在线免费视频 | 精品一区二区三区中文字幕老牛 | 亚洲精品国产综合区久久久久久久 | 久久精品一| 在线观看欧美日韩 | 久久97视频 | 欧美日本韩国一区二区 | 狠狠操电影 | 国产精品极品美女在线观看免费 | 久久午夜视频 | 亚洲va国产va天堂va久久 | 国产高清精品一区 | 久草免费在线视频 | 澳门av | 亚洲激情在线 | 国产精品亚洲视频 | 亚洲黄色一区二区 | 91亚洲精品在线 | 精品亚洲一区二区三区四区五区 | 亚洲第一色 | 国产看片网站 | 四虎最新网址 | 精品国产乱码久久久久久久软件 | 色综合一区二区三区 | 午夜影视| 在线二区 | 一区二区不卡视频 | 国产精品区一区二区三含羞草 | 午夜小视频在线观看 | 91电影在线看 | 欧美三级网址 | 国产精品99久久免费观看 | 日韩欧美久久 | 中文字字幕一区二区三区四区五区 | 国产精品久久久久久久久久东京 | 亚洲精品久久 | 日韩五月| 九九九久久久久久 | 免费在线观看黄色 | 久久露脸国产精品 |