【譯】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.框架

代碼

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.net

總結

本文做者介紹了@Import註解的使用。這個註解幫助咱們將多個配置文件(多是按功能分,或是按業務分)導入到單個主配置中,以免將全部配置寫在一個配置中。code

相關文章
相關標籤/搜索