Spring框架中的@Import註解
在以前的文章中,做者介紹了Spring JavaConfig. 這是除了使用傳統的XML文件以外,spring帶來的新的選擇。一樣做者列出了做爲Java Config一部分的annotations.若是你是spring的新手,這裏也有大量的關於spring和spring 4的資料索引。java
在列表中,@Import 是被用來整合全部在@Configuration註解中定義的bean配置。這其實很像咱們將多個XML配置文件導入到單個文件的情形。@Import註解實現了相同的功能。本文會介紹使用@Import註解來導入spring工程中的JavaConfig文件.spring
在下面的例子中,我建立了兩個配置文件,而後導入到主配置文件中。最後使用主配置文件來建立context.segmentfault
代碼
Car.java package javabeat.net.basic; public interface Car { public void print(); }
Toyota.java package javabeat.net.basic; import org.springframework.stereotype.Component; @Component public class Toyota implements Car{ public void print(){ System.out.println("I am Toyota"); } }
Volkswagen.java package javabeat.net.basic; import org.springframework.stereotype.Component; @Component public class Volkswagen implements Car{ public void print(){ System.out.println("I am Volkswagen"); } }
JavaConfigA.java package javabeat.net.basic; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class JavaConfigA { @Bean(name="volkswagen") public Car getVolkswagen(){ return new Volkswagen(); } }
JavaConfigB.java package javabeat.net.basic; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class JavaConfigB { @Bean(name="toyota") public Car getToyota(){ return new Toyota(); } }
ParentConfig.java package javabeat.net.basic; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @Configuration @Import({JavaConfigA.class,JavaConfigB.class}) public class ParentConfig { //Any other bean definitions }
ContextLoader.java package javabeat.net.basic; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class ContextLoader { public static void main (String args[]){ AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ParentConfig.class); Car car = (Toyota)context.getBean("toyota"); car.print(); car = (Volkswagen)context.getBean("volkswagen"); car.print(); context.close(); } }
程序執行輸出
I am Toyata
I am Volkswagen框架
總結
本文做者介紹了@Import註解的使用。這個註解幫助咱們將多個配置文件(多是按功能分,或是按業務分)導入到單個主配置中,以免將全部配置寫在一個配置中。post