spring框架中的@Import註解

spring框架中的@Import註解

Spring框架中的@Import註解

在以前的文章中,做者介紹了Spring JavaConfig. 這是除了使用傳統的XML文件以外,spring帶來的新的選擇。一樣做者列出了做爲Java Config一部分的annotations.若是你是spring的新手,這裏也有大量的關於springspring 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

 

@Import註解
@Import註解就是以前xml配置中的import標籤,能夠用於依賴第三方包中bean的配置和加載
在4.2以前只支持導入配置類
在4.2,@Import註解支持導入普通的java類,並將其聲明成一個bean

[java] view plain copy
  1. public class DemoService {  
  2.     public void doSomething(){  
  3.         System.out.println("ok");  
  4.     }  
  5.   
  6. }  
[java] view plain copy
  1. import org.springframework.context.annotation.Configuration;  
  2. import org.springframework.context.annotation.Import;  
  3.   
  4. @Configuration  
  5. @Import(DemoService.class)//在spring 4.2以前是不不支持的  
  6. public class DemoConfig {  
  7.   
  8. }  

運行

[java] view plain copy
  1. import org.springframework.context.annotation.AnnotationConfigApplicationContext;  
  2.   
  3. public class Main {  
  4.     public static void main(String[] args) {  
  5.         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("com..example");  
  6.         DemoService ds = context.getBean(DemoService.class);  
  7.         ds.doSomething();  
  8.     }  
  9.   
  10. }  

輸出結果
ok

相關文章
相關標籤/搜索