国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

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

2024-07-13 10:15:34
字體:
來源:轉載
供稿:網友

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

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

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

一、 基于XML的配置

<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的配置。

二、基于注解的配置

@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類配置

@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配置方式比較詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 张家界市| 武陟县| 宁武县| 洞口县| 土默特右旗| 珠海市| 贞丰县| 龙胜| 东宁县| 樟树市| 合川市| 当阳市| 辉南县| 克山县| 洞头县| 宁夏| 武清区| 奇台县| 汤原县| 栾川县| 盐津县| 新乡县| 德兴市| 炎陵县| 德令哈市| 讷河市| 忻州市| 五原县| 青田县| 平遥县| 辛集市| 谢通门县| 渝中区| 黄骅市| 阿瓦提县| 汶上县| 晴隆县| 德保县| 比如县| 西昌市| 涟源市|