我正在使用@Configtor绑定
与@ConfigurationProperties
类似
@ConstructorBinding
@ConditionalOnProperty(name = "nexus.orchestration.cloud.model", havingValue = "true", matchIfMissing = false)
@ConfigurationProperties(value = "nexus.orchestration.model.cloud-bucket", ignoreUnknownFields = false)
@ToString
public static class ModelCloudBucket {
private final CloudBucket cloudBucket;
public ModelCloudBucket(final CloudProviderEnum provider, final String bucket, final String folder) {
this.cloudBucket = new CloudBucket(provider, bucket, folder);
}
}
我有@EnableConfigurationProperties(FlowCache. ModelCloudBucket.class)
在我的主应用程序类上
但是,@条件属性
不起作用。如果我的属性是false,并且我注释掉yaml文件中的CloudBucket对象,它在启动时失败,因为它不能绑定云桶属性。如果属性是false,那么该对象不应该是必需的,然后bean应该是null。我如何使这个工作?
据我所知,Spring@ConditionalOnProperty
和@ConfigurationProperties
用于两个不同的领域:
@条件属性
用于条件注入bean和配置。@ConfigurationProperties
用于外部配置,它来自您的配置文件,如application.properties
从代码中,我假设ModelCloudBucket
是一个bean,如果nexus,您需要注入它。编排。云model==true
,它将提供者、存储桶和文件夹
作为其属性。
因此,我建议使用以下代码:
属性类:
@Configuration
@ConfigurationProperties(prefix = "nexus.orchestration.model.cloud-bucket")
@Data
public class ModelCloudBucketProps {
private CloudProviderEnum testProp;
private String bucket;
private String folder;
}
以及将被注入属性的原始bean:
@Component
@ConditionalOnProperty(name = "nexus.orchestration.cloud.model", havingValue = "true")
public class ModelCloudBucket {
...
public ModelCloudBucket(ModelCloudBucketProps config) {
this.cloudBucket = new CloudBucket(config.getProvider(), ...);
}
}
@EnableConfigurationProperties(FlowCache. ModelCloudBucket.class)
可以被删除,因为将通过@Configance
注入。
通过这种方式,您可以使用条件控制bean注入,并将其与外部配置初始化分离。
问题内容: 变量strCSSClass通常具有一个值,但有时为空。 我不想在此输入元素的HTML中包含空的class =“”,这意味着如果strCSSClass为空,我根本就不需要class =属性。 以下是执行条件HTML属性的一种方法: 有没有更优雅的方式做到这一点?具体来说,我可以遵循与元素其他部分中使用的相同的语法:class =“ @ strCSSClass”? 问题答案: 您没有从Ra
问题内容: 我想使用该类填充一个。 我想将条目加载到文件中,然后将其复制到中。 之前,我曾经使用属性文件初始化,但是现在我已经定义了,并且只想在构造函数中对其进行初始化。 较早的方法: 但是现在,我有这个 如何将属性对象分配给此处? 问题答案: 如果我理解正确,则属性中的每个值都是代表整数的字符串。因此,代码如下所示:
我想启用或禁用具有外部配置的SSL/TLS,这些配置可以在应用程序启动期间提供。应用程序应该支持http和HTTPS的所有crud操作。 既然上面的属性是不推荐使用的,那么我如何在不使用配置文件的情况下实现它。
问题内容: 如何将sql查询写入hibernate条件? 问题答案: 想我找到了答案。您必须使用Projection.sqlProjection()而不是Projections.sum()。例:
使用的技术: Spring Boot 1.4.2.Release,Spring 4.3.4.Release,Tymeleaf 2.1.5.Release,Tomcat Embeded 8.5.6、Maven 3、Java 8 我创建了这个服务来发送电子邮件