第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Spring 多種方式初始化

1. 前言

通過之前的學(xué)習(xí),我們可以熟練掌握 Spring 容器初始化的方法。常用的方法:一種是純 xml 文件的方式,第二種是使用群體最多的一種,就是 xml 文件搭配類上面的注解,來進(jìn)行初始化容器。

我們今天講解一種全新的方法,也是目前最為流行的一種方法。是基于 JavaConfig 的方式來實(shí)現(xiàn)。通俗地說也叫基于注解的方式。

疑問導(dǎo)出:

我們學(xué)完了那么多種 Spring 的使用,其實(shí)完全可以勝任開發(fā)的需求,還有必要學(xué)習(xí)一種新的初始化方式嗎? 它又有什么優(yōu)點(diǎn)呢?

伴隨疑問:我們開始新的小節(jié)學(xué)習(xí)。

2. 注解介紹

2.1 注解列舉

  • @Bean
  • @Configuration
  • @ComponentScan
  • @Component @Service @Controller @Repository

上述注解是我們?cè)诎咐行枰褂玫降?。?dāng)然對(duì)于我們來講,其實(shí)最后面的幾個(gè)注解已經(jīng)是熟客了,也就不多介紹。所以我把他們放到了一起。

上面的三個(gè)我們是沒有用過的,所以下面我分別對(duì)三個(gè)注解做個(gè)解釋說明。

2.2 注解作用闡述

1.@Bean 注解的解釋:

見名知意,此注解作用于方法上,表示方法返回的實(shí)例初始化到由 Spring 管理的容器中。其實(shí)對(duì)現(xiàn)在的我們而言,非常好理解。因?yàn)槲覀冎?Spring 的 IoC 其實(shí)就是控制反轉(zhuǎn),實(shí)例化 bean 實(shí)例,管理 bean 實(shí)例。

相當(dāng)于使用 xml 文件方式的 <bean> 標(biāo)簽,一般來說,此注解出現(xiàn)在被 @Configuration 注釋的類中。

那么…@Configuration 注解的作用又是什么呢?

2.@Configuration 注解的解釋:

其實(shí)看此注解的名稱,也能大致猜到它的作用。沒錯(cuò),它的作用就是配置,也就是相當(dāng)于我們之前編寫過很多次的 Spring 配置文件 ——Applicationcontext.xml

之前寫過的案例中,Spring 容器的初始化必須加載這個(gè)配置文件,而在配置文件中,就包含了很多的 標(biāo)簽,大家沒忘記吧?不要提了… 不要關(guān)了電腦就忘記之前寫過的代碼。

那么我們上面說 @Bean 標(biāo)簽,一般出現(xiàn)在被此注解注釋的類中,就是這個(gè)原因。

3.@ComponentScan 注解的解釋:

根據(jù)上面兩個(gè)注解的推斷,我們能猜出它的作用就是組件掃描。相當(dāng)于之前我們?cè)?Spring 的配置文件中用過的標(biāo)簽 context:component-scan,

現(xiàn)在講述使用 JavaConfig 是基于注解的方式,當(dāng)然也避免不了組件的掃描。此注解也是配置類的組成部分。

搭建項(xiàng)目最基本的三個(gè)注解給大家介紹過了,下面我們就進(jìn)入正題。

3. 工程實(shí)例

工程步驟:

  1. 創(chuàng)建 maven 工程
  2. 導(dǎo)入依賴
  3. 編寫配置類
  4. 測(cè)試代碼

步驟解釋:

第一步,第二步省略,實(shí)在演示太多次了。誰不會(huì)拖出去槍斃十分鐘… 剩下的咱們繼續(xù)。

配置類:

在 src 下的 com.wyan.config 目錄之下創(chuàng)建配置類 SpringConfig,代碼與目錄結(jié)構(gòu)如下:

代碼解釋:

SpringConfig 的類上面的注解,表示當(dāng)前的類是個(gè)配置類,容器中的 bean 實(shí)例都從這個(gè)配置類中來。

@Bean 注解所在的方法會(huì)返回 UserServiceImpl 的實(shí)例,而且被 Spring 的容器管理。

測(cè)試類:

圖片描述

代碼解釋:

  1. 16 行的代碼,我們看到一個(gè)新的類叫做 AnnotationConfigApplicationContext,此類是注解配置應(yīng)用容器。
  2. 17 行代碼,通過調(diào)用方法 register () 將配置類 SpringConfig 作為參數(shù)傳入,容器就成功加載了配置類。
  3. 18 行刷新方法調(diào)用大家應(yīng)該不陌生吧,在源碼解釋的小節(jié),就看到它內(nèi)部就是初始化容器的詳細(xì)步驟。

測(cè)試結(jié)果:

圖片描述

上面可以看到,servcie 的實(shí)例確實(shí)從容器中獲取得到,那么說明,我們基于 JavaConfig 的配置方式已經(jīng)實(shí)現(xiàn)完成。但可能大家會(huì)有一點(diǎn)疑問:

配置類中的方法是返回 bean 對(duì)象的實(shí)例,放入容器。那么一個(gè)方法返回一個(gè) bean ,如果我們的項(xiàng)目中存在非常多的類,難道需要?jiǎng)?chuàng)建很多個(gè)方法嗎?

下面使用最后一個(gè)注解,也就是 @ComponentScan 的使用。

更改配置類:

圖片描述

代碼解釋:

  1. 在類上面加入注解 @ComponentScan,而注解中的值,就是需要被掃描的組件類所在目錄;
  2. 因?yàn)橥ㄟ^掃描加載組件,所以之前創(chuàng)建 bean 返回實(shí)例的方法不需要;
  3. 掃描的 servcie 目錄下的類上一定需要搭配 @Service @Controller @Repository @Component。

測(cè)試結(jié)果:

圖片描述

4. 小結(jié)

本節(jié),主要講解 Spring 容器的基于 JavaConfig 的實(shí)現(xiàn)方式。核心思想是借助于注解加載配置,加載 bean。與其他方式相比各有利弊,大家不要執(zhí)著于形式,根據(jù)自己的開發(fā)習(xí)慣,公司規(guī)范來選擇就可以。