spring實戰六之使用基於java配置的Spring

來源:互聯網
上載者:User

標籤:

之前接觸的都是基於XML配置的Spring,Spring3.0開始可以幾乎不使用XML而使用純粹的java代碼來配置Spring應用。使用基於java配置的Spring的步驟如下:

1. 建立基於java的配置。

配置極少量的XML來啟用java配置:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:component-scanbase-package="com.springinaction.springidol" /></beans>

 <context:component-scan>除了知道如何自動註冊那些使用某種構造型(stereotype)的註解所標註的Bean,它也會自動載入使用 @Configuration註解所標註的類。在上面的配置中,base-package屬性告知Spring在com.springinaction.spring-idol包內尋找使用@Configuration註解所標註的所有類。

2. 定義一個配置類

在基於java的配置裡使用@Configuration註解的java類,就等價於XML配置中的<beans>元素,如下所示:

package com.springinaction.springidol;import org.springframework.context.annotation.Configuration;@Configurationpublic class SpringIdolConfig {// Bean declaration methods go here}

@Configuration註解會作為一個標識告知Spring:這個類將包含一個或多個Spring Bean的定義。這些Bean的定義是使用@Bean註解所標註的方法。接下來使用@Bean來裝配使用Spring基於java的配置所聲明的Bean。

3. 聲明一個簡單的Bean

使用@Bean註解標註一個方法來定義duke Bean:

@Beanpublic Performer duke() {return new Juggler();}

上面的配置等價於之前使用XML所配置的<bean>元素。@Bean告知Spring這個方法將返回一個對象,該對象應該被註冊為Spring應用上下文中的一個Bean。方法名將作為該Bean的ID。在該方法中所實現的所有邏輯本質上都是為了建立Bean。

4. 使用Spring的基於java的配置進行注入。

之前,在XML設定檔中使用構造方法注入,使用<constructor-arg>元素來建立同時拋出15個的雜技師。而使用基於java的配置,只需要把數字直接傳人構造器中:

@Beanpublic Performer duke15() {return new Juggler(15);}

Setter方法注入也是自然的java代碼:

@Beanpublic Performer kenny() {Instrumentalist kenny = new Instrumentalist();kenny.setSong("Jingle Bells");return kenny;}

上面展示的是基於java配置的對於簡單值的構造器注入和Setter方法注入。接下來說明Bean是如何裝配另一個Bean的引用的。

首先用java聲明一個sonnet29 Bean:

@Beanprivate Poem sonnet29() {return new Sonnet29();}

這是一個簡單的基於java的Bean的聲明。

接下來建立一個PoeticJuggler Bean,通過構造器為它裝配sonnet29 Bean:

@Beanpublic Performer poeticDuke() {return new PoeticJuggler(sonnet29());}

上面就是通過引用其他Bean的方法來裝配Bean的引用。

在Spring的java配置中,通過聲明方法引用一個Bean並不等同於調用該方法。

通過使用@Bean註解標註sonnet29()方法,會告知Spring我們希望該方法定義的Bean要被註冊進Spring的應用上下文中。因此,在其他Bean的聲明方法中引用這個方法時,Spring都會攔截該方法的調用,並嘗試在應用上下文中尋找該Bean,而不是讓方法建立一個新的執行個體。

spring實戰六之使用基於java配置的Spring

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.