spring的配置和使用
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/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-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; @Configuration public class SpringIdolConfig { // Bean declaration methods go here }
@Configuration註解會作為一個標識告知Spring:這個類將包含一個或多個Spring Bean的定義。這些Bean的定義是使用@Bean註解所標註的方法。接下來使用@Bean來裝配使用Spring基於java的配置所聲明的Bean。
3. 聲明一個簡單的Bean
使用@Bean註解標註一個方法來定義duke Bean:
@Bean public Performer duke() { return new Juggler(); }
上面的配置等價於之前使用XML所配置的<bean>元素。@Bean告知Spring這個方法將返回一個對象,該對象應該被註冊為Spring應用上下文中的一個Bean。方法名將作為該Bean的ID。在該方法中所實現的所有邏輯本質上都是為了創建Bean。
4. 使用Spring的基於java的配置進行註入。
之前,在XML配置文件中使用構造方法註入,使用<constructor-arg>元素來創建同時拋出15個的雜技師。而使用基於java的配置,只需要把數字直接傳人構造器中:
@Bean public Performer duke15() { return new Juggler(15); }
Setter方法註入也是自然的java代碼:
@Bean public Performer kenny() { Instrumentalist kenny = new Instrumentalist(); kenny.setSong("Jingle Bells"); return kenny; }
上面展示的是基於java配置的對於簡單值的構造器註入和Setter方法註入。接下來說明Bean是如何裝配另一個Bean的引用的。
首先用java聲明一個sonnet29 Bean:
@Bean private Poem sonnet29() { return new Sonnet29(); }
這是一個簡單的基於java的Bean的聲明。
接下來創建一個PoeticJuggler Bean,通過構造器為它裝配sonnet29 Bean:
@Bean public Performer poeticDuke() { return new PoeticJuggler(sonnet29()); }
上面就是通過引用其他Bean的方法來裝配Bean的引用。
在Spring的java配置中,通過聲明方法引用一個Bean並不等同於調用該方法。
通過使用@Bean註解標註sonnet29()方法,會告知Spring我們希望該方法定義的Bean要被註冊進Spring的應用上下文中。因此,在其他Bean的聲明方法中引用這個方法時,Spring都會攔截該方法的調用,並嘗試在應用上下文中查找該Bean,而不是讓方法創建一個新的實例。
轉載自 https://www.cnblogs.com/longshiyVip/p/4596423.html
spring的配置和使用