最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java之Spring注解配置bean實例代碼解析

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

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

【1】注解類別

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

@Repository : 標識持久層組件

@Service : 標識服務(wù)層(業(yè)務(wù)層)組件

@Controller : 標識表現(xiàn)層組件

Spring 能夠從 classpath 下自動掃描, 偵測和實例化具有特定注解的組件。

對于掃描到的組件, Spring 有默認的命名策略: 使用非限定類名, 第一個字母小寫. 也可以在注解中通過 value 屬性值標識組件的名稱

【2】context:component-scan

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

當需要掃描多個包時, 可以使用逗號分隔,如果僅希望掃描特定的類而非基包下的所有類,可使用 resource-pattern 屬性過濾特定的類。示例:

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

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

如下配置將只掃描repository下的包:resource-pattern="repository/*.class"
默認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接口及其實現(xiàn)類 ,其他不行-->
<!--  <context:include-filter type="assignable" expression="com.web.annotation.repository.UserRepository"/>-->
  <!-- 不包含Repository接口及其實現(xiàn)類 ,其他可以-->
<!--  <context:exclude-filter type="assignable" expression="com.web.annotation.repository.UserRepository"/>-->
 </context:component-scan>

【3】代碼中引用其他bean,簡單示例如下:

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

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

@Autowired 和 @Resource 、@Inject

【4】使用 @Autowired 自動裝配 Bean

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

默認按類型匹配,若一個類型多個實現(xiàn),將會自動查詢注解定義的名字,先匹配。若實現(xiàn)類注解都沒有定義名字,將會拋出異常??!

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

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

2)默認情況下, 當 IOC 容器里存在多個類型兼容的 Bean 時, 通過類型的自動裝配將無法工作。此時可以在 @Qualifier 注解里提供 Bean 的名稱. Spring 允許對方法的入?yún)俗?@Qualifiter 已指定注入 Bean 的名稱。

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

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

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

【5】使用 @Resource 自動裝配 Bean

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

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

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

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

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

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

類型為接口類型

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

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

總結(jié)

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

相關(guān)文章

  • java:程序包org.junit不存在解決辦法詳析

    java:程序包org.junit不存在解決辦法詳析

    這篇文章主要給大家介紹了關(guān)于java:程序包org.junit不存在解決辦法的相關(guān)資料,這個錯誤通常發(fā)生在使用JUnit測試時,因為缺少JUnit庫的依賴,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • springMVC框架下JQuery傳遞并解析Json數(shù)據(jù)

    springMVC框架下JQuery傳遞并解析Json數(shù)據(jù)

    json作為一種輕量級的數(shù)據(jù)交換格式,在前后臺數(shù)據(jù)交換中占據(jù)著非常重要的地位,這篇文章主要介紹了springMVC框架下JQuery傳遞并解析Json數(shù)據(jù),有興趣的可以了解一下。
    2017-01-01
  • SpringBoot中使用JeecgBoot的Autopoi導(dǎo)出Excel的方法步驟

    SpringBoot中使用JeecgBoot的Autopoi導(dǎo)出Excel的方法步驟

    這篇文章主要介紹了SpringBoot中使用JeecgBoot的Autopoi導(dǎo)出Excel的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 解決JavaEE開發(fā)中字符編碼出現(xiàn)亂碼的問題

    解決JavaEE開發(fā)中字符編碼出現(xiàn)亂碼的問題

    下面小編就為大家?guī)硪黄鉀QJavaEE開發(fā)中字符編碼出現(xiàn)亂碼的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • MyBatis插件機制超詳細講解

    MyBatis插件機制超詳細講解

    MyBatis在四大對象的創(chuàng)建過程中,都會有插件進行介入。插件可以利用動態(tài)代理機制一層層的包裝目標對象,而實現(xiàn)在目標對象執(zhí)行目標方法之前進行攔截的效果
    2022-11-11
  • 細說Springcloud eureka的幾種主動下線服務(wù)的方式

    細說Springcloud eureka的幾種主動下線服務(wù)的方式

    這篇文章主要介紹了細說Springcloud eureka的幾種主動下線服務(wù)的方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • spring boot如何使用spring AOP實現(xiàn)攔截器

    spring boot如何使用spring AOP實現(xiàn)攔截器

    本篇文章主要介紹了spring boot如何使用spring AOP實現(xiàn)攔截器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Java直接內(nèi)存和堆內(nèi)存的關(guān)系

    Java直接內(nèi)存和堆內(nèi)存的關(guān)系

    在Java編程中,內(nèi)存管理是一個重要的話題,本文介紹了Java中兩種主要內(nèi)存類型:堆內(nèi)存和直接內(nèi)存,堆內(nèi)存是JVM管理的主要內(nèi)存區(qū)域,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • swagger2和knife4j的詳細使用教程(入門級)

    swagger2和knife4j的詳細使用教程(入門級)

    最近項目中用到了Swagger2和knife4j作為接口文檔,所以下面這篇文章主要給大家介紹了關(guān)于swagger2和knife4j的詳細使用教程,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • springboot中nacos-client獲取配置的實現(xiàn)方法

    springboot中nacos-client獲取配置的實現(xiàn)方法

    本文主要介紹了springboot中nacos-client獲取配置的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04

最新評論

万州区| 云梦县| 仁寿县| 苏尼特左旗| 新宁县| 色达县| 香港 | 常德市| 绵阳市| 全南县| 朝阳市| 鄄城县| 南江县| 宣威市| 林口县| 通许县| 文山县| 关岭| 巩留县| 石阡县| 绥德县| 湖州市| 长子县| 涿鹿县| 姚安县| 汤原县| 临湘市| 苗栗市| 安多县| 策勒县| 南昌县| 伊春市| 三河市| 杂多县| 白玉县| 承德县| 涿鹿县| 大新县| 睢宁县| 墨竹工卡县| 乌兰察布市|