激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 詳解Spring框架注解掃描開啟之配置細(xì)節(jié)

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

2020-12-15 15:09Javahih Java教程

本篇文章主要介紹了詳解Spring框架注解掃描開啟之配置細(xì)節(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

前言

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

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

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

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

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

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

Demo:

Demo:XML注冊(cè)Bean方式

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

?
1
2
3
4
5
6
7
package com.test;
pubic class B{
 
  public B(){
    System.out.println("B類");
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
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注冊(cè)

?
1
2
3
4
<bean id="bBean"class="com.test.B"/>
<bean id="aBean"class="com.test.A">
 <property name="bClass" ref="bBean"/>
</bean>

啟動(dòng)加載Application.xml

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

Demo:annotation配置注解開啟方式

?
1
2
3
4
5
6
7
package com.test;
pubic class B{
 
  public B(){
    System.out.println("B類");
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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里注冊(cè)Bean,假如我們先這樣配置,僅僅注冊(cè)Bean,不開啟掃描

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

或者僅僅開啟掃描,不注冊(cè)Bean

?
1
<context:annotation-config/>

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

輸出:
類B
類A

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

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

解決方法:

修改Application.xml配置文件

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

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

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

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

Demo:component配置注解開啟方式

?
1
2
3
4
5
6
7
package com.test;
pubic class B{
 
  public B(){
    System.out.println("B類");
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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掃描

?
1
<context:annotation-config />

加載配置文件:

輸出:
類B
類A

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

修改配置文件:

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

重新加載配置文件:

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

歸納:

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

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.jianshu.com/p/cd0091aacf89

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产视频在线 | 日本一区二区在线 | 斗罗破苍穹在线观看免费完整观看 | 毛片免费观看完整版 | 色就色 综合偷拍区91网 | 亚洲欧美第一视频 | 国产视频软件在线 | 亚洲综合视频在线播放 | 亚洲性生活免费视频 | 国产亚洲精品久久久久久久久 | www噜噜偷拍在线视频 | 亚洲精品久久久久久久久久久 | 在线播放av网址 | 被日视频 | 日韩一级片毛片 | 黄色大片在线免费看 | 91在线视频导航 | 午夜视频你懂的 | 99麻豆久久久国产精品免费 | 欧美日韩在线中文 | 欧美aaaaaaaa| 91精品久久久久久久久网影视 | 国产电影精品久久 | 国产成人精品一区二区三区电影 | 免看黄大片aa | 91麻豆精品国产91久久久无需广告 | 欧美a久久 | 李宗瑞国产福利视频一区 | 亚洲综合中文 | 亚洲第一成人久久网站 | 日本一级黄色大片 | 91 在线观看 | av影片在线观看 | 久久亚洲一区二区三区成人国产 | 亚洲精品成人久久 | 国产精品亚洲综合一区二区三区 | 男女视频免费看 | 韩国精品一区二区三区四区五区 | 国产欧美精品综合一区 | 欧美综合成人 | 日韩毛片毛片久久精品 |