spring框架中的@Import注解


spring框架中的@Import注解

Spring框架中的@Import注解

在之前的文章中,作者介紹了Spring JavaConfig. 這是除了使用傳統的XML文件之外,spring帶來的新的選擇。同樣作者列出了作為Java Config一部分的annotations.如果你是spring的新手,這里也有大量的關於springspring 4的資料索引。

在列表中,@Import 是被用來整合所有在@Configuration注解中定義的bean配置。這其實很像我們將多個XML配置文件導入到單個文件的情形。@Import注解實現了相同的功能。本文會介紹使用@Import注解來導入spring工程中的JavaConfig文件.

在下面的例子中,我創建了兩個配置文件,然后導入到主配置文件中。最后使用主配置文件來創建context.

代碼

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注解的使用。這個注解幫助我們將多個配置文件(可能是按功能分,或是按業務分)導入到單個主配置中,以避免將所有配置寫在一個配置中。

 

@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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM