使用spring注释创建不同的上下文

时间:2013-09-17 07:39:19

标签: java spring configuration spring-annotations applicationcontext

我正在尝试理解一个在使用spring xml应用程序上下文时看起来很简单的场景,但在使用注释时看起来更模糊。

假设我有一个看起来像这样的类(这只是为了示例。不要注意类名等等):

@Component
public class BusinessLogicImpl implements BusinessLogic {
    @Autowire
    BeanThatTalksWithDataSource beanThatTalksWithDataSource; 

    @Autowire
    BeanThatDoesSomeWork beanThatDoesSomeWork;

}

然后我有一些其他bean使用这个bean

 @Component
 public class MainLogicImpl implements MainLogic {

     @Autowire     
     BusinesLogic businessLogic;

 }

我们假设BeanThatTalksWithDataSource有2个实现 - 一个用于处理文件系统数据源,另一个用于DB。此外,BeanThatDoesSomeWork有两种不同的实现方式。

我想创建4种不同的配置,包括BeanThatTalksWithDataSource的2个实现与BeanThatDoesSomeWork的2个实现的每个组合,最后将正确的变量加载到MainLogicImpl

在xml中它非常简单 - 我创建了4个xml文件,其中包含4种不同的可能上下文。使用注释时,这等同于什么?

我想强调的是我在谈论注释而不是@Configuration类。我正在试图弄清楚是否可以单独使用注释。

2 个答案:

答案 0 :(得分:1)

您可以在4个不同的包中放置不同的实现,并为组件扫描选择不同的包。

答案 1 :(得分:1)

使用@Profile注释所有实现,并在启动应用程序时设置活动配置文件。现在当组件扫描开始时,它只会拾取满足活动配置文件的bean。

链接

@Profile(javadoc