【发布时间】:2020-01-31 10:54:11
【问题描述】:
我正在使用 Spring Boot 1.5.15,在读取带有注释 @ConfigurationProperties 的 bean 时遇到了一些问题。
具体来说,我正在尝试使用以下 bean。
@ConfigurationProperties(prefix = "permissions")
public class Permissions {
private List<String> permissions;
private Set<String> permissionsSet;
public List<String> getPermissions() {
return this.permissions;
}
public void setPermissions(List<String> permissions) {
this.permissionsSet = new HashSet<>(permissions)
this.permissions = permissions;
}
// Other code
}
对应的application.yml如下。
permissions:
permissions:
- ROLE_1
- ROLE_2
我面临的问题是成员permissionsSet 始终为空。我调试了应用程序,发现 Spring 使用以下工作流来创建 bean。
- 默认构造函数调用
- Setter 调用一个空列表
- 在 setter 调用后为列表注入正确的值。
这是正确的行为吗?我试图在文档中找到任何参考,但我找不到任何东西。
有什么办法可以解决这个问题吗?
非常感谢。
【问题讨论】:
-
为什么不直接使用一组“权限”?
-
因为 Spring 不允许将值直接注入
Set:( -
有趣,该功能似乎已在更高版本中添加,因为我见过这样做的代码。
标签: java spring spring-boot configurationproperties