首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@ConditionalOnProperty配置无法按预期工作

@ConditionalOnProperty配置无法按预期工作
EN

Stack Overflow用户
提问于 2020-12-14 21:34:21
回答 1查看 885关注 0票数 0

对于一个简单的spring引导应用程序,当时,我将面临一个意外的行为。

我在application.yml中定义了条件标志: service.enable=true

然后我创建了ServiceMesh.java接口,它应该由serviceA和serviceB实现,如下所示:

代码语言:javascript
复制
public interface ServiceMesh {
}

public class ServiceA implements ServiceMesh{
// ... code
}

public class ServiceB implements ServiceMesh{
// ... code
}

我还定义了一个配置类:

代码语言:javascript
复制
@Configuration
public class ConditionOnPropertyConfiguration {

@Bean
@ConditionalOnProperty(prefix = "service", name = "enabled", havingValue = "true")
public ServiceMesh from(){
    return new ServiceA();
  }

@Bean
@ConditionalOnProperty(prefix = "service", name = "enabled", havingValue = "false")
public ServiceMesh from(Environment env){
    return new ServiceB();
  }
}

在运行我的主课时:

代码语言:javascript
复制
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

我得到了这个错误:没有“com.example.demo.service.ServiceMesh”类型的合格bean可用:预期至少有一个bean可以作为自动测试候选。依赖性注释:{}

预期行为是启动应用程序。

EN

回答 1

Stack Overflow用户

发布于 2020-12-14 21:57:15

将方法名称from更改为serviceAserviceB。我已经将属性定义从service.enable=true更改为service.enabled=true

代码语言:javascript
复制
    @Bean
    @ConditionalOnProperty(prefix = "service", name = "enabled", havingValue = "true")
    public ServiceMesh serviceA() {
        return new ServiceA();
    }

    @Bean
    @ConditionalOnProperty(prefix = "service", name = "enabled", havingValue = "false")
    public ServiceMesh serviceB() {
        return new ServiceB();
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65296813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档