欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java之Spring注解配置bean實(shí)例代碼解析

 更新時(shí)間:2017年09月22日 10:04:52   作者:流煙默  
這篇文章主要介紹了Java之Spring注解配置bean實(shí)例代碼解析,具有一定參考價(jià)值,文中還有有關(guān)Spring學(xué)習(xí)的資料下載鏈接及相關(guān)內(nèi)容推薦,需要的朋友可以了解下。

前面幾篇均是使用xml配置bean,如果有上百個(gè)bean,這是不可想象的。故而,請(qǐng)使用注解配置bean ?。?!

【1】注解類別

@Component : 基本注解, 標(biāo)識(shí)了一個(gè)受 Spring(點(diǎn)擊這里可以下載《Spring應(yīng)用開發(fā)完全手冊(cè)》) 管理的組件

@Repository : 標(biāo)識(shí)持久層組件

@Service : 標(biāo)識(shí)服務(wù)層(業(yè)務(wù)層)組件

@Controller : 標(biāo)識(shí)表現(xiàn)層組件

Spring 能夠從 classpath 下自動(dòng)掃描, 偵測(cè)和實(shí)例化具有特定注解的組件。

對(duì)于掃描到的組件, Spring 有默認(rèn)的命名策略: 使用非限定類名, 第一個(gè)字母小寫. 也可以在注解中通過(guò) value 屬性值標(biāo)識(shí)組件的名稱

【2】context:component-scan

當(dāng)在組件類上使用了特定的注解之后, 還需要在 Spring 的配置文件中聲明 <context:component-scan/> :base-package 屬性指定一個(gè)需要掃描的基類包,Spring 容器將會(huì)掃描這個(gè)基類包里及其子包中的所有類。

當(dāng)需要掃描多個(gè)包時(shí), 可以使用逗號(hào)分隔,如果僅希望掃描特定的類而非基包下的所有類,可使用 resource-pattern 屬性過(guò)濾特定的類。示例:

<context:component-scan base-package="com.web.annotation" resource-pattern="repository/*.class"
use-default-filters="true">
<context:include-filter> 子節(jié)點(diǎn)表示要包含的目標(biāo)類
<context:exclude-filter> 子節(jié)點(diǎn)表示要排除在外的目標(biāo)類
<context:component-scan> 下可以擁有若干個(gè) <context:include-filter> 和 <context:exclude-filter> 子節(jié)點(diǎn)

一個(gè)復(fù)雜的<context:component-scan/>

如下配置將只掃描repository下的包:resource-pattern="repository/*.class"
默認(rèn)fileter(use-default-filters="true")將掃描所有注解組件,若想使用 include-filter等,則將其改為false.
 <context:component-scan base-package="com.web.annotation" resource-pattern="repository/*.class" 
 use-default-filters="true">
  <!-- 只包含Repository注解 ,其他不行-->
<!--  <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>-->
  <!-- 不包含Repository注解 ,其他可以-->
<!--  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>-->
  <!-- 只包含Repository接口及其實(shí)現(xiàn)類 ,其他不行-->
<!--  <context:include-filter type="assignable" expression="com.web.annotation.repository.UserRepository"/>-->
  <!-- 不包含Repository接口及其實(shí)現(xiàn)類 ,其他可以-->
<!--  <context:exclude-filter type="assignable" expression="com.web.annotation.repository.UserRepository"/>-->
 </context:component-scan>

【3】代碼中引用其他bean,簡(jiǎn)單示例如下:

 @Resource(name="userRepository")
 private UserRepository repository;
 public void add(){
  System.out.println("UserService add...");
  repository.save();
 }

引用其他bean有如下幾種方式:

@Autowired 和 @Resource 、@Inject

【4】使用 @Autowired 自動(dòng)裝配 Bean

@Autowired 注解自動(dòng)裝配具有兼容類型的單個(gè) Bean屬性,構(gòu)造器, 普通字段(即使是非 public), 一切具有參數(shù)的方法都可以應(yīng)用@Authwired 注解

默認(rèn)按類型匹配,若一個(gè)類型多個(gè)實(shí)現(xiàn),將會(huì)自動(dòng)查詢注解定義的名字,先匹配。若實(shí)現(xiàn)類注解都沒(méi)有定義名字,將會(huì)拋出異常?。?br />

1)默認(rèn)情況下, 所有使用 @Authwired 注解的屬性都需要被設(shè)置。

當(dāng) Spring 找不到匹配的 Bean 裝配屬性時(shí), 會(huì)拋出異常, 若某一屬性允許不被設(shè)置, 可以設(shè)置 @Authwired 注解的 required 屬性為 false。

2)默認(rèn)情況下, 當(dāng) IOC 容器里存在多個(gè)類型兼容的 Bean 時(shí), 通過(guò)類型的自動(dòng)裝配將無(wú)法工作。此時(shí)可以在 @Qualifier 注解里提供 Bean 的名稱. Spring 允許對(duì)方法的入?yún)?biāo)注 @Qualifiter 已指定注入 Bean 的名稱。

3)@Authwired 注解也可以應(yīng)用在數(shù)組類型的屬性上, 此時(shí) Spring 將會(huì)把所有匹配的 Bean 進(jìn)行自動(dòng)裝配。

4)@Authwired 注解也可以應(yīng)用在集合屬性上, 此時(shí) Spring 讀取該集合的類型信息, 然后自動(dòng)裝配所有與之兼容的 Bean。

5)@Authwired 注解用在 java.util.Map 上時(shí), 若該 Map 的鍵值為 String, 那么 Spring 將自動(dòng)裝配與之 Map 值類型兼容的 Bean, 此時(shí) Bean 的名稱作為鍵值。

【5】使用 @Resource 自動(dòng)裝配 Bean

@Resource 注解要求提供一個(gè) Bean 名稱的屬性,若該屬性為空,則自動(dòng)采用標(biāo)注處的變量或方法名作為 Bean 的名稱
我是最喜歡使用這個(gè)注解的,寫上字段值@Resource(value="userService"),簡(jiǎn)單方便又省心。不用擔(dān)心一個(gè)類型多個(gè)實(shí)現(xiàn),而且不用額外加@Qualifier 去進(jìn)行精確匹配。

【6】注解獲取bean,并使用方法,如:

@Repository(value="bookShopDAO")
public class BookShopDAOImpl implements BookShopDAO {
}

類型為實(shí)現(xiàn)類型

 @Resource(name="bookShopDAO")
 BookShopDAOImpl bookShopDAO;

將可以使用 BookShopDAOImpl 的所有方法 ??!

類型為接口類型

 @Resource(name="bookShopDAO")
 BookShopDAO bookShopDAO;
 //此時(shí)用到了多態(tài)

將只能使用 BookShopDAO中定義 的所有方法 ??!,不能使用實(shí)現(xiàn)類自定義的方法

總結(jié)

本文關(guān)于Spring注解配置bean實(shí)例代碼解析的內(nèi)容就到這里了,希望對(duì)大家有所幫助。有興趣的朋友可以參閱:Javabean和map相互轉(zhuǎn)化方法代碼示例,java中javaBean與Bean的深入理解javaBean的基礎(chǔ)知識(shí)及常見亂碼解決方法等。感謝大家對(duì)腳本之家的支持!

相關(guān)文章

  • mybatis if標(biāo)簽使用總結(jié)

    mybatis if標(biāo)簽使用總結(jié)

    這篇文章主要介紹了mybatis if標(biāo)簽使用總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 基于Jpa中ManyToMany和OneToMany的雙向控制

    基于Jpa中ManyToMany和OneToMany的雙向控制

    這篇文章主要介紹了Jpa中ManyToMany和OneToMany的雙向控制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Mybatis常用標(biāo)簽及屬性小結(jié)

    Mybatis常用標(biāo)簽及屬性小結(jié)

    這篇文章主要介紹了Mybatis常用標(biāo)簽及屬性小結(jié),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-12-12
  • 簡(jiǎn)單談?wù)凧ava中String類型的參數(shù)傳遞問(wèn)題

    簡(jiǎn)單談?wù)凧ava中String類型的參數(shù)傳遞問(wèn)題

    這篇文章主要介紹了簡(jiǎn)單談?wù)凧ava中String類型的參數(shù)傳遞問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • java_時(shí)間戳與Date_相互轉(zhuǎn)化的實(shí)現(xiàn)代碼

    java_時(shí)間戳與Date_相互轉(zhuǎn)化的實(shí)現(xiàn)代碼

    本篇文章是對(duì)java_時(shí)間戳與Date_相互轉(zhuǎn)化的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下如下。
    2016-11-11
  • java實(shí)現(xiàn)打磚塊游戲算法

    java實(shí)現(xiàn)打磚塊游戲算法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)打磚塊游戲算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 如何使用Mockito調(diào)用靜態(tài)方法和void方法

    如何使用Mockito調(diào)用靜態(tài)方法和void方法

    這篇文章主要介紹了如何使用Mockito調(diào)用靜態(tài)方法和void方法的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java實(shí)現(xiàn)京東登陸示例分享

    java實(shí)現(xiàn)京東登陸示例分享

    這篇文章主要介紹了使用java實(shí)現(xiàn)的京東商城登陸示例,需要的朋友可以參考下
    2014-03-03
  • 圖片疊加效果Java代碼實(shí)現(xiàn)

    圖片疊加效果Java代碼實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了圖片疊加效果Java代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • java設(shè)計(jì)模式-裝飾者模式詳解

    java設(shè)計(jì)模式-裝飾者模式詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式之裝飾者模式詳解和代碼實(shí)例,Decorator模式(別名Wrapper):動(dòng)態(tài)將職責(zé)附加到對(duì)象上,若要擴(kuò)展功能,裝飾者提供了比繼承更具彈性的代替方案,需要的朋友可以參考下
    2021-07-07

最新評(píng)論