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

詳解Spring框架注解掃描開啟之配置細(xì)節(jié)

 更新時(shí)間:2017年08月14日 14:27:25   作者:Javahih  
本篇文章主要介紹了詳解Spring框架注解掃描開啟之配置細(xì)節(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

前言

Spring框架對Bean進(jìn)行裝配提供了很靈活的方式,下面歸納一下主要的方式:

  • 在XML中進(jìn)行顯示配置
  • 在Java中進(jìn)行顯示配置
  • 隱式的bean發(fā)現(xiàn)機(jī)制和自動裝配

而自動裝配實(shí)現(xiàn)就需要注解掃描,這時(shí)發(fā)現(xiàn)了兩種開啟注解掃描的方式,即<context:annotation-config/>和<context:component-scan>

下面歸納一下這兩種方式的異同點(diǎn):

<context:annotation-config>:注解掃描是針對已經(jīng)在Spring容器里注冊過的Bean

<context:component-scan>:不僅具備<context:annotation-config>的所有功能,還可以在指定的package下面掃描對應(yīng)的bean

Demo:

Demo:XML注冊Bean方式

下面給出兩個(gè)類,類A和類B

package com.test;
pubic class B{

  public B(){
    System.out.println("B類");
  }
}
package com.test;
public class A {
  private B bClass;

  public void setBClass(B bClass){
    this.bClass = bClass;
    System.out.println("通過set的方式注入B類");
  }

  public A(){
    System.out.println("A類");
  }
}

如何我們這時(shí)可以通過傳統(tǒng)的xml配置在Application.xml里進(jìn)行bean注冊

<bean id="bBean"class="com.test.B"/>
<bean id="aBean"class="com.test.A">
 <property name="bClass" ref="bBean"/>
</bean>

啟動加載Application.xml

輸出:
類B
類A
通過set的方式注入B類

Demo:annotation配置注解開啟方式

package com.test;
pubic class B{

  public B(){
    System.out.println("B類");
  }
}
package com.test;
public class A {
  private B bClass;

  @Autowired 
  public void setBClass(B bClass){
    this.bClass = bClass;
    System.out.println("通過set的方式注入B類");
  }

  public A(){
    System.out.println("A類");
  }
}

然后我們需要在Application.xml里注冊Bean,假如我們先這樣配置,僅僅注冊Bean,不開啟掃描

<bean id="bBean"class="com.test.B"/>
<bean id="aBean"class="com.test.A"/>

或者僅僅開啟掃描,不注冊Bean

<context:annotation-config/>

這時(shí)加載Application.xml配置

輸出:
類B
類A

我們會發(fā)現(xiàn)下面的@Autowired的方法是不能被加載的

@Autowired 
  public void setBClass(B bClass){
    this.bClass = bClass;
    System.out.println("通過set的方式注入B類");
  }

解決方法:

修改Application.xml配置文件

<context:annotation-config/>
<bean id="bBean"class="com.test.B"/>
<bean id="aBean"class="com.test.A"/>

重新加載配置文件,輸出正常了

輸出:
類B
類A
通過set的方式注入B類

歸納:<context:annotation-config>:注解掃描是針對已經(jīng)在Spring容器里注冊過的Bean

Demo:component配置注解開啟方式

package com.test;
pubic class B{

  public B(){
    System.out.println("B類");
  }
}
package com.test;
@Component
public class A {
  private B bClass;

  @Autowired 
  public void setBClass(B bClass){
    this.bClass = bClass;
    System.out.println("通過set的方式注入B類");
  }

  public A(){
    System.out.println("A類");
  }
}

然后我們配置一下application.xml,開啟annotaion-config掃描

<context:annotation-config />

加載配置文件:

輸出:
類B
類A

原因:<context:annotation-config>:注解掃描是針對已經(jīng)在Spring容器里注冊過的Bean,Bean并沒有注冊過,所以即使開啟了@Autowired、@Component注解 和配置開啟了annotaion-config掃描還是加載不到

修改配置文件:

<context:component-scan base-package="com.test"/>

重新加載配置文件:

輸出:
類B
類A
通過set的方式注入B類

歸納:

<context:annotation-config>:注解掃描是針對已經(jīng)在Spring容器里注冊過的Bean

<context:component-scan>:不僅具備<context:annotation-config>的所有功能,還可以在指定的package下面掃描對應(yīng)的bean

<context:annotation-config />和 <context:component-scan>同時(shí)存在的時(shí)候,前者會被忽略。

即使注冊Bean,同時(shí)開啟<context:annotation-config />掃描,@autowire,@resource等注入注解只會被注入一次,也即只加載一次

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • intellij idea快速查看當(dāng)前類中的所有方法(推薦)

    intellij idea快速查看當(dāng)前類中的所有方法(推薦)

    這篇文章主要介紹了intellij idea快速查看當(dāng)前類中的所有方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 如何使用IDEA新建一個(gè)普通的Javaweb項(xiàng)目

    如何使用IDEA新建一個(gè)普通的Javaweb項(xiàng)目

    今天給大家普及如何使用IDEA新建一個(gè)普通的Javaweb項(xiàng)目及配置tomcat的方法,在文末給大家提到如果不想每次都重啟tomcat,可以設(shè)置快捷方式,對idea新建Javaweb項(xiàng)目感興趣的朋友一起看看吧
    2021-06-06
  • 解析Tomcat 6、7在EL表達(dá)式解析時(shí)存在的一個(gè)Bug

    解析Tomcat 6、7在EL表達(dá)式解析時(shí)存在的一個(gè)Bug

    這篇文章主要是對Tomcat 6、7在EL表達(dá)式解析時(shí)存在的一個(gè)Bug進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • java數(shù)組排列組合問題匯總

    java數(shù)組排列組合問題匯總

    這篇文章主要為大家詳細(xì)匯總了java數(shù)組排列組合問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Guava中這些Map技巧可以讓代碼量減少了50%

    Guava中這些Map技巧可以讓代碼量減少了50%

    guava提供了非常強(qiáng)大的操作,可以讓我們把java代碼寫的很簡潔,下面這篇文章主要給大家介紹了關(guān)于Guava中這些Map使用技巧可以讓代碼量減少了50%的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • SpringBoot詳細(xì)講解yaml配置文件的用法

    SpringBoot詳細(xì)講解yaml配置文件的用法

    這篇文章主要介紹了SpringBoot中的yaml配置文件問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Java用戶交互scanner及運(yùn)算結(jié)構(gòu)代碼詳解

    Java用戶交互scanner及運(yùn)算結(jié)構(gòu)代碼詳解

    這篇文章主要介紹了Java用戶交互scanner及運(yùn)算結(jié)構(gòu)代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • springboot使用shiro-整合redis作為緩存的操作

    springboot使用shiro-整合redis作為緩存的操作

    這篇文章主要介紹了springboot使用shiro-整合redis作為緩存的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java JDK1.7對字符串的BASE64編碼解碼方法

    Java JDK1.7對字符串的BASE64編碼解碼方法

    今天小編就為大家分享一篇Java JDK1.7對字符串的BASE64編碼解碼方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Java常用API類之Math System tostring用法詳解

    Java常用API類之Math System tostring用法詳解

    System類代表系統(tǒng),系統(tǒng)級的很多屬性和控制方法都放置在該類的內(nèi)部。該類位于java.lang包,Java 的 Math 包含了用于執(zhí)行基本數(shù)學(xué)運(yùn)算的屬性和方法,如初等指數(shù)、對數(shù)、平方根和三角函數(shù),toString() 方法用于返回以一個(gè)字符串表示的 Number 對象值
    2021-10-10

最新評論

顺义区| 上饶县| 杭锦后旗| 林周县| 东乡族自治县| 虎林市| 界首市| 光山县| 合川市| 西安市| 济源市| 淮安市| 临沭县| 康定县| 泰安市| 靖西县| 正定县| 彰化县| 南城县| 公主岭市| 腾冲县| 商城县| 禄劝| 恩施市| 闻喜县| 庆安县| 罗平县| 孟村| 无锡市| 古丈县| 城口县| 特克斯县| 康平县| 宿迁市| 特克斯县| 潜山县| 德阳市| 广东省| 惠水县| 腾冲县| 淮北市|