基于@Profile的Spring @Autowire字段

4

我需要根据 spring.profiles.active 属性自动装配字段。 服务仅基于配置文件创建,但由于该服务在其他类中进行了自动装配,因此无法使用 @Profile 注释。

是否有一种方法可以根据配置文件来自动装配字段?

1个回答

1
你可以根据不同的配置文件创建不同的服务实现。
在下面的示例中,我使用mockito来模拟dataSource bean。
例如:
 @Configuration
    @ComponentScan
    class YourConfig {

        @Profile("production")
        @Qualifier("datasource")
        @Bean
        public DataSource dataSourceProduction(){
           return new DataSourceProduction()
        }

        @Profile("development")
        @Qualifier("datasource")
        @Bean
        public DataSource dataSourceDevelopment(){
           return mock(DataSourceProduction.class);
        }

想避免创建一个模拟对象,但谢谢,我猜我不得不这样做。 - unnik
根据你想要实现的目标,你不一定需要像这样创建一个模拟对象...但原始问题不够清晰,因此这种做法可能是错误的。 - xenoterracide
5
问题是如何告诉Spring:“嘿,Spring,在我的类中只有在激活了X配置文件时才自动装配这个字段。” - Rafik EL YAAGOUBI

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接