Spring JavaConfig實例
從Spring 3起,JavaConfig功能已經包含在Spring核心模塊,它允許開發者將bean定義和在Spring配置XML文件到Java類中。
但是,仍然允許使用經典的XML方式來定義bean和配置,JavaConfig是另一種替代解決方案。
看來看經典的XML定義和JavaConfig的不同,如下定義在Spring容器中的bean。
Spring XML file - applicationContext.xml :
<bean id="helloBean" class="com.yiibai.hello.impl.HelloWorldImpl">
等效於以下JavaConfig的配置:
package com.yiibai.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.yiibai.hello.HelloWorld;
import com.yiibai.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.yiibai.hello;
public interface HelloWorld {
void printHelloWorld(String msg);
}
package com.yiibai.hello.impl;
import com.yiibai.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.yiibai.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.yiibai.hello.HelloWorld;
import com.yiibai.hello.impl.HelloWorldImpl;
@Configuration
public class AppConfig {
@Bean(name="helloBean")
public HelloWorld helloWorld() {
return new HelloWorldImpl();
}
}
5. 執行結果
使用 AnnotationConfigApplicationContext 加載您的JavaConfig類
package com.yiibai.core;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.yiibai.config.AppConfig;
import com.yiibai.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