java - 使用 spring 注解创建不同的上下文

标签 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 个实现 - 一个与文件系统数据源一起使用,另一个与数据库一起使用。此外,BeanThatDoesSomeWork 有 2 种不同的实现。

我想创建 4 种不同的配置,其中涉及 BeanThatTalksWithDataSource 的 2 个实现与 BeanThatDoesSomeWork 的 2 个实现的每种组合,并在最后加载正确的变体MainLogicImpl

在 xml 中这相当简单 - 我创建了 4 个 xml 文件来保存 4 种不同的可能上下文。使用注释时,相当于这样的东西是什么?

我想强调,我谈论的是注释而不是@Configuration类。我正在尝试弄清楚仅使用注释是否可以实现这一点。

最佳答案

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

链接

@个人资料 ( javadoc )

关于java - 使用 spring 注解创建不同的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18843986/

相关文章:

java - 将Set <byte []>转换为List <String>

java - Spring提交表单后为空对象(H2、SpringBoot、Thymeleaf、CRUD)

java - 一对多同类spring data(hibernate)

spring - 从 spring 中提取 "component-scan"值

java - 带有 Hibernate 4.2 错误 : setCharacterStream(ILjava/io/Reader;J)V is abstract 的 C3p0

unix - 如何通过 Connect :Direct NDM? 传输二进制文件

javascript - 为什么我不能在 android studio 的字符串变量中访问 localStorage?

java - Java 中的奇怪输出?

java - 使用 JRadioButton 进行 Tab 排序

带有 Spring Resttemplate : Error messageConverter 的 Android