gpt4 book ai didi

java - 字段上的@ConfigurationProperties

转载 作者:搜寻专家 更新时间:2023-11-01 03:48:53 25 4
gpt4 key购买 nike

使用@ConfigurationProperties定义属性时,是否可以定义特定字段的前缀而不是整个类?

例如,假设我们有一个 Properties 类

@ConfigurationProperties(prefix = "com.example")
public class MyProperties {
private String host;
private String port;
// Geters and setters...
}

这会将字段hostport 绑定(bind)到com.example.hostcom.example.port。假设我想将 port 绑定(bind)到 com.example.something.port。这样做的方法是定义一个内部类 Something 并在其中添加属性 port。但是如果我需要更多的前缀,它会变得太麻烦。我尝试在 setter 上添加 @ConfigurationProperties,因为注释的目标是 ElementType.TYPEElementType.METHOD:

@ConfigurationProperties(prefix = "com.example.something.port")
public void setPort(int port) {...}

但是最后没有成功。除了通过内部类之外,还有其他方法可以自定义前缀吗?

最佳答案

  1. 如果你想映射单个属性,只需使用@Value注解。

  2. 如果您有群组,例如像这样:

    test1.property1=...test1.test2.property2=...test1.test2.property3=...

你可以使用

import javax.validation.constraints.NotNull;

import lombok.Getter;
import lombok.Setter;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Getter
@Setter
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties(locations = "classpath:myapp.properties")
public class ApplicationProperties {

private String property1;
private Test2 test2;

@Getter
@Setter
@ConfigurationProperties(prefix = "test2")
public static class Test2 {
@NotNull
private String property2;
@NotNull
private String property3;
}
}

关于java - 字段上的@ConfigurationProperties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34207920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com