一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring 3.x中三種Bean配置方式比較詳解

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

2021-03-12 14:20iloveyin Java教程

這篇文章主要介紹了Spring 3.x中三種Bean配置方式比較詳解,具有一定借鑒價值,需要的朋友可以參考下

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

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

?
1
2
3
4
5
6
7
8
9
10
package com.chinalife.dao 
public class LoginUserDao {
    …… 
      // 用于設置初始化方法 
    public void myInit() {
    }
    // 用于設置銷毀方法 
    public void myDestroy() {
    }
}

一、 基于XML的配置

?
1
2
3
4
5
<bean id=“loginUserDao” class=“com.chinalife.dao.impl.LoginUserDaoImpl”
    lazy-init=“true” init-method=“myInit” destroy-method=“myDestroy”
    scope=“prototype”>
    …… 
</bean>

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

當Bean的實現類來源于第三方類庫,比如DataSource、HibernateTemplate等,無法在類中標注注解信息,只能通過XML進行配置;而且命名空間的配置,比如aop、context等,也只能采用基于XML的配置。

二、基于注解的配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Scope(“prototype”) 
@Lazy(true
@Component(“loginUserDao”) 
public class LoginUserDao { 
  …… 
  // 用于設置初始化方法 
  @PostConstruct
  public void myInit() { 
 
  
 
  // 用于設置銷毀方法 
  @PreDestroy
  public void myDestroy() { 
  
}

在Bean實現類中通過一些Annotation來標注Bean類:

·@Component:標注一個普通的SpringBean類(可以指定Bean名稱,未指定時默認為小寫字母開頭的類名)

·@Controller:標注一個控制器類

·@Service:標注一個業務邏輯類

·@Repository:標注一個DAO類

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

當Bean的實現類是當前項目開發的,可以直接在Java類中使用基于注解的配置,配置比較簡單。

三、基于Java類配置

?
1
2
3
4
5
6
7
8
@Configuration
public class Conf { 
  @Scope(“prototype”) 
  @Bean(“loginUserDao”) 
  public LoginUserDao loginUserDao() { 
    return new LoginUserDao(); 
  
}

在標注了@Configuration的java類中,通過在類方法標注@Bean定義一個Bean。方法必須提供Bean的實例化邏輯。通過@Bean的name屬性可以定義Bean的名稱,未指定時默認名稱為方法名。在方法處通過@Autowired使方法入參綁定Bean,然后在方法中通過代碼進行注入;也可以調用配置類的@Bean方法進行注入。通過@Bean的initMethod或destroyMethod指定一個初始化或者銷毀方法。通過Bean方法定義處標注@Scope指定Bean的作用范圍。通過在Bean方法定義處標注@Lazy指定Bean的延遲初始化。

當實例化Bean的邏輯比較復雜時,則比較適合基于Java類配置的方式。

總結

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

原文鏈接:http://blog.csdn.net/iloveyin/article/details/51019225

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 小辣椒精品福利视频导航 | 亚色九九九全国免费视频 | 99在线视频精品 | 2022国产麻豆剧传媒古装 | 羲义嫁密着中出交尾gvg794 | 欧美人妖另类性hd | 香蕉久久一区二区三区 | 草逼的视频 | 大陆国语自产精品视频在 | 美女的隐私无遮挡的网页 | 妇伦小说 | blackedhd 18sex| 国产99在线| 成人在线视频国产 | 男gay网站视频免费观看 | 日本一卡二卡3卡四卡无卡网址 | 99热热99| 甜宠巨肉h文1v1校园 | 俄罗斯freeoo性另类 | 99热成人精品热久久669 | 日本人成年视频在线观看 | 99视频免费在线 | 欧美香蕉视频 | 亚洲 国产精品 日韩 | 久久久WWW免费人成精品 | 四虎最新网址在线观看 | 精灵之森高清在线 | 欧美一区二区三区精品国产 | 视频亚洲一区 | 暖暖 免费 高清 日本 在线1 | 亚洲区精品久久一区二区三区 | 久久久久免费视频 | 欧美人与禽杂交大片 | 日韩专区在线观看 | 第四色男人天堂 | 日本成年片高清在线观看 | 久见久热 这里只有精品 | 亚洲国产精品成人午夜在线观看 | 亚洲AV无码一区二区三区乱子伦 | 日本大片网 | 欧美国产视频 |