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

Spring 3.x中三種Bean配置方式比較詳解

 更新時(shí)間:2017年12月28日 08:37:51   作者:iloveyin  
這篇文章主要介紹了Spring 3.x中三種Bean配置方式比較詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下

以前Java框架基本都采用了XML作為配置文件,但是現(xiàn)在Java框架又不約而同地支持基于Annotation的“零配置”來(lái)代替XML配置文件,Struts2、Hibernate、Spring都開始使用Annotation來(lái)代替XML配置文件了;而在Spring3.x提供了三種選擇,分別是:基于XML的配置、基于注解的配置和基于Java類的配置。

下面分別介紹下這三種配置方式;首先定義一個(gè)用于舉例的JavaBean。

package com.chinalife.dao  
public class LoginUserDao {
	……  
	  // 用于設(shè)置初始化方法  
	public void myInit() {
	}
	// 用于設(shè)置銷毀方法  
	public void myDestroy() {
	}
}

一、 基于XML的配置

<bean id=“l(fā)oginUserDao” class=“com.chinalife.dao.impl.LoginUserDaoImpl” 
    lazy-init=“true” init-method=“myInit” destroy-method=“myDestroy” 
    scope=“prototype”> 
    ……  
</bean> 

在XML配置中,通過<bean></bean>來(lái)定義Bean,通過id或name屬性定義Bean的名稱,如果未指定id和name屬性,Spring則自動(dòng)將全限定類名作為Bean的名稱。通過<property>子元素或者p命名空間的動(dòng)態(tài)屬性為Bean注入值。還可以通過<bean>的init-method和destory-method屬性指定Bean實(shí)現(xiàn)類的方法名來(lái)設(shè)置生命過程方法(最多指定一個(gè)初始化方法和銷毀方法)。通過<bean>的scope指定Bean的作用范圍。聽過<bean>的lazy-init屬性指定是否延遲初始化。

當(dāng)Bean的實(shí)現(xiàn)類來(lái)源于第三方類庫(kù),比如DataSource、HibernateTemplate等,無(wú)法在類中標(biāo)注注解信息,只能通過XML進(jìn)行配置;而且命名空間的配置,比如aop、context等,也只能采用基于XML的配置。

二、基于注解的配置

@Scope(“prototype”)  
@Lazy(true)  
@Component(“l(fā)oginUserDao”)  
public class LoginUserDao {  
  ……  
  // 用于設(shè)置初始化方法  
  @PostConstruct 
  public void myInit() {  
 
  }  
 
  // 用于設(shè)置銷毀方法  
  @PreDestroy 
  public void myDestroy() {  
  }  
}  

在Bean實(shí)現(xiàn)類中通過一些Annotation來(lái)標(biāo)注Bean類:

·@Component:標(biāo)注一個(gè)普通的SpringBean類(可以指定Bean名稱,未指定時(shí)默認(rèn)為小寫字母開頭的類名)

·@Controller:標(biāo)注一個(gè)控制器類

·@Service:標(biāo)注一個(gè)業(yè)務(wù)邏輯類

·@Repository:標(biāo)注一個(gè)DAO類

通過在成員變量或者方法入?yún)⑻帢?biāo)注@Autowired按類型匹配注入,也可以使用@Qualifier按名稱配置注入。通過在方法上標(biāo)注@PostConstrut和PreDestroy注解指定的初始化方法和銷毀方法(可以定義任意多個(gè))。通過@Scope(“prototype”)指定Bean的作用范圍。通過在類定義處標(biāo)注@Lazy(true)指定Bean的延遲加載。

當(dāng)Bean的實(shí)現(xiàn)類是當(dāng)前項(xiàng)目開發(fā)的,可以直接在Java類中使用基于注解的配置,配置比較簡(jiǎn)單。

三、基于Java類配置

@Configuration 
public class Conf {  
  @Scope(“prototype”)  
  @Bean(“l(fā)oginUserDao”)  
  public LoginUserDao loginUserDao() {  
    return new LoginUserDao();  
  }  
}  

在標(biāo)注了@Configuration的java類中,通過在類方法標(biāo)注@Bean定義一個(gè)Bean。方法必須提供Bean的實(shí)例化邏輯。通過@Bean的name屬性可以定義Bean的名稱,未指定時(shí)默認(rèn)名稱為方法名。在方法處通過@Autowired使方法入?yún)⒔壎˙ean,然后在方法中通過代碼進(jìn)行注入;也可以調(diào)用配置類的@Bean方法進(jìn)行注入。通過@Bean的initMethod或destroyMethod指定一個(gè)初始化或者銷毀方法。通過Bean方法定義處標(biāo)注@Scope指定Bean的作用范圍。通過在Bean方法定義處標(biāo)注@Lazy指定Bean的延遲初始化。

當(dāng)實(shí)例化Bean的邏輯比較復(fù)雜時(shí),則比較適合基于Java類配置的方式。

總結(jié)

以上就是本文關(guān)于Spring 3.x中三種Bean配置方式比較詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • Ubuntu16.04安裝部署solr7的圖文詳細(xì)教程

    Ubuntu16.04安裝部署solr7的圖文詳細(xì)教程

    這篇文章主要為大家詳細(xì)介紹了Ubuntu16.04安裝部署solr7的圖文詳細(xì)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • shade解決mybatis包沖突問題

    shade解決mybatis包沖突問題

    這篇文章主要介紹了shade解決mybatis包沖突問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 淺析Jmeter多用戶token使用問題

    淺析Jmeter多用戶token使用問題

    這篇文章主要介紹了Jmeter多用戶token使用問題,通過具體的例子給大家介紹了Jmeter多用戶token使用場(chǎng)景接口分析,需要的朋友可以參考下
    2021-10-10
  • Spring?Boot統(tǒng)一接口返回及全局異常處理

    Spring?Boot統(tǒng)一接口返回及全局異常處理

    這篇文章主要介紹了Spring?Boot統(tǒng)一接口返回及全局異常處理,文章圍繞主題展開相關(guān)資料,具有一定的參考價(jià)值需要的小伙伴可以參考一下
    2022-04-04
  • dubbo擴(kuò)展點(diǎn)AOP切面功能擴(kuò)展示例詳解

    dubbo擴(kuò)展點(diǎn)AOP切面功能擴(kuò)展示例詳解

    這篇文章主要為大家介紹了dubbo擴(kuò)展點(diǎn)AOP切面功能擴(kuò)展示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • mybatis plus開發(fā)過程中遇到的問題記錄及解決

    mybatis plus開發(fā)過程中遇到的問題記錄及解決

    這篇文章主要介紹了mybatis plus開發(fā)過程中遇到的問題記錄及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 使用JDBC工具類實(shí)現(xiàn)簡(jiǎn)單的登錄管理系統(tǒng)

    使用JDBC工具類實(shí)現(xiàn)簡(jiǎn)單的登錄管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了使用JDBC工具類實(shí)現(xiàn)簡(jiǎn)單的登錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java多線程之死鎖詳解

    Java多線程之死鎖詳解

    這篇文章主要介紹了Java多線程的死鎖,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • springmvc+spring+mybatis實(shí)現(xiàn)用戶登錄功能(上)

    springmvc+spring+mybatis實(shí)現(xiàn)用戶登錄功能(上)

    這篇文章主要為大家詳細(xì)介紹了springmvc+spring+mybatis實(shí)現(xiàn)用戶登錄功能,比較基礎(chǔ)的學(xué)習(xí)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 淺析Java集合及LIst接口

    淺析Java集合及LIst接口

    這篇文章主要介紹了Java集合及LIst接口,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評(píng)論

丹巴县| 团风县| 都昌县| 西安市| 霍林郭勒市| 名山县| 德庆县| 雷州市| 定远县| 榆树市| 额敏县| 旬阳县| 长沙县| 普兰店市| 阳曲县| 大名县| 台北市| 宜兰市| 旬阳县| 会同县| 桦甸市| 岗巴县| 大竹县| 山东省| 泰顺县| 连山| 永顺县| 元氏县| 巫山县| 双城市| 威远县| 滦南县| 新宁县| 承德县| 榆林市| 集安市| 雅安市| 时尚| 唐河县| 府谷县| 塔河县|