從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實例