Hen*_*sen 5 java spring-boot immutables-library
我正在尝试找到一种使用Immutables库创建用于保存Spring Boot应用程序配置的数据类的方法。
我的数据配置类是:
@Value.Immutable
@JsonDeserialize(as = ImmutableAuthConfig.class)
public interface AuthConfig {
String domain();
String clientId();
@Value.Redacted
String clientSecret();
}
Run Code Online (Sandbox Code Playgroud)
当主配置类设置为
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
public class Config {
private ImmutableAuthConfig auth;
public AuthConfig getAuth() {
return auth;
}
public void setAuth(ImmutableAuthConfig auth) {
this.auth = auth;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用“ ImmutableAuthConfig或”或“仅” AuthConfig作为字段的一些变体,但没有任何方法可以改善这种情况。尚未获取配置,并且在应用程序启动后auth仍保留配置字段null。
AuthConfig用传统的POJO 替换类的内容可以解决此问题,但是我更喜欢一个不变的对象。有什么方法可以说服Spring与Immutables库生成的类进行接口连接?
该库对可修改类的支持提供了一种非常接近我正在寻找的方法。
@Value.Modifiable
public interface AuthConfig {
String domain();
String clientId();
@Value.Redacted
String clientSecret();
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个类,ModifiableAuthConfig该类提供了一个满足 Spring 的接口JavaBeanBinder,该接口用于反序列化配置。
此外,还需要提供可变类的实例AuthConfig,然后 Spring 可以填充该实例:
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
public class Config {
private ImmutableAuthConfig auth = ModifiableAuthConfig.create();
public AuthConfig getAuth() {
return auth;
}
}
Run Code Online (Sandbox Code Playgroud)
随后可以通过该接口对加载的配置进行任何使用AuthConfig,该接口不提供变异方法。
| 归档时间: |
|
| 查看次数: |
665 次 |
| 最近记录: |