1

我试图理解一个在使用 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 一起使用。还有BeanThatDoesSomeWork2 种不同的实现。

我想创建 4 种不同的配置,这些配置涉及 2 的实现BeanThatTalksWithDataSource与 2 的实现的每种组合,BeanThatDoesSomeWork最后将正确的变体加载到MainLogicImpl.

在 xml 中这相当容易——我创建了 4 个 xml 文件,它们包含 4 个不同的可能上下文。在使用注解时,这种事情的等价物是什么?

我想强调一下,我说的是注解而不是 @Configuration 类。我试图弄清楚仅使用注释是否可能。

4

2 回答 2

1

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

于 2013-09-17T07:53:14.697 回答
1

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

链接

@Profile ( javadoc )

于 2013-09-17T07:54:22.910 回答