nekolr's blog

爱吃咖喱棒的打字员DA☆ZE~

0%

Spring 注解之 @Import

在 Spring 的配置文件中可以使用 <import/> 标签来模块化配置文件,很自热的就想到使用注解也能够实现模块化的配置。

1
2
3
4
5
6
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Import {
Class<?>[] value();
}

可以看出,@Import 注解可以放在类、接口、注解和枚举上。从 Spring 官方文档给出的说明了解到,在 Spring 4.2 版本以前,@Import 注解只支持导入配置类(使用 @Configuration 注解的类);在 Spring 4.2 及以后的版本 @Import 支持导入普通的 Java 类。

1
2
3
4
5
6
7
8
@Configuration
public class ConfigA {

@Bean
public A getA() {
return new A();
}
}
1
2
3
4
5
6
7
public class ConfigB {

@Bean
public B getB() {
return new B();
}
}
1
2
3
4
@Import({ConfigA.class, ConfigB.class})
public class ConfigC {

}
1
2
3
4
5
6
7
public class Main {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(ConfigC.class);
A a = context.getBean(A.class);
B b = context.getBean(B.class);
}
}

在 Spring 中,使用 @Configuration 注解的类其实也是 Spring 容器中的一个 Bean,因此同样可以使用 @Autowired@Value 等注解。