Spring JavaConfig實例

從Spring 3起,JavaConfig功能已經包含在Spring核心模組,它允許開發者將bean定義和在Spring配置XML檔到Java類中。
但是,仍然允許使用經典的XML方式來定義bean和配置,JavaConfig是另一種替代解決方案。
看來看經典的XML定義和JavaConfig的不同,如下定義在Spring容器中的bean。

Spring XML file - applicationContext.xml :

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<bean id="helloBean" class="com.zaixian.hello.impl.HelloWorldImpl">

</beans>
等效於以下JavaConfig的配置:
package com.zaixian.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.zaixian.hello.HelloWorld;
import com.zaixian.hello.impl.HelloWorldImpl;

@Configuration
public class AppConfig {

    @Bean(name="helloBean")
    public HelloWorld helloWorld() {
        return new HelloWorldImpl();
    }

}

Spring JavaConfig Hello World

現在,看到一個完整的Spring JavaConfig例子。

1. 工程目錄結構

這個例子的目錄結構如下。

3. Spring Bean

一個簡單的Bean

package com.zaixian.hello;

public interface HelloWorld {

	void printHelloWorld(String msg);

}
package com.zaixian.hello.impl;

import com.zaixian.hello.HelloWorld;

public class HelloWorldImpl implements HelloWorld {

	@Override
	public void printHelloWorld(String msg) {

		System.out.println("Hello : " + msg);
	}

}

4. JavaConfig 注解

使用 @Configuration 注釋告訴 Spring,這是核心的 Spring 配置檔,並通過 @Bean 定義 bean。
package com.zaixian.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.zaixian.hello.HelloWorld;
import com.zaixian.hello.impl.HelloWorldImpl;

@Configuration
public class AppConfig {

    @Bean(name="helloBean")
    public HelloWorld helloWorld() {
        return new HelloWorldImpl();
    }

}

5. 執行結果

使用 AnnotationConfigApplicationContext 加載您的JavaConfig類

package com.zaixian.core;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.zaixian.config.AppConfig;
import com.zaixian.hello.HelloWorld;

public class App {
	public static void main(String[] args) {

            ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
	    HelloWorld obj = (HelloWorld) context.getBean("helloBean");

	    obj.printHelloWorld("Spring Java Config");

	}
}

輸出結果

Hello : Spring Java Config


上一篇: Spring松耦合實例 下一篇: Spring JavaConfig @Import實例