我希望从@Value注释转向使用@ConfigurationProperties,主要是因为我最终拥有了太多的属性,因此在目标类中添加所有属性似乎会使类中的值注释变得杂乱无章,如果我将它们标记为final,那么构造函数将有一个长长的参数列表。
application.properties
sms-gateway:
sms:
authorization:
token: xyz
username: abc
password: pass
url: http://example.com
lynx:
cmd: lynx -dump -display_charset=utf-8 <%= @sms-gateway_sms_url %>
via:
cmd: true
admin:
status:
url: http://admin.example.com/statusSmsService.java
...
@Value("${sms-gateway.sms.url}")
private String url;
@Value("${sms-gateway.sms.username}")
private String username;
@Value("${sms-gateway.sms.password}")
private String password;
and so on ...作为备用@ConfigurationProperties,您可以拥有一个将属性组合在一起的专用类。但是,最终您必须将其绑定到一个公共名称空间,以便属性与使用@ConfigurationProperties注释的类的字段绑定。
SmsConfig.java
...
@Getter
@RequiredArgsConstructor
@Configuration
@ConfigurationProperties(prefix = "sms-gateway.sms")
public class SmsConfig.java {
private final String username;
private final String password;
private final String url;
...
}但是,要添加其他嵌套属性,您需要为每个嵌套属性添加类以及@NestedConfigurationProperty,以指示这是一个嵌套属性。如果有许多嵌套属性,这可能会再次失控。
我的问题是双重的-
private final String SmsGatewayUsername并将其绑定到用户名属性?中。
谢谢您,非常感谢您的评论和回答!
发布于 2020-11-05 15:05:09
Map<String, Object> .。
。
属性名称和配置类都应该遵循逻辑结构,如果它们是相同的结构,那么处理起来就容易得多。
https://stackoverflow.com/questions/64699436
复制相似问题