我已经阅读了许多帖子,问题,示例以及所有应该起作用的内容,但是由于任何原因它都不起作用...。
谁能告诉我为什么这行不通?
@Configuration()
@PropertySource("users.yml")
@Data
@ConfigurationProperties
@EnableConfigurationProperties
public class UserConfig {
public String test;
public List<String> states;
public List<User> users;
@PostConstruct
public void print() {
System.out.println(this);
System.exit(0);
}
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String username;
private String pw;
private List<String> roles;
}
输出是 UserConfig(test='yeah im tested', states=[], users=[])
对于给定的YAML
test: 'yeah im tested'
states:
- 'Up'
- 'Down'
users:
-
username: 'Gienek'
pw: 'niegienek'
roles:
- 'rola1'
- 'rola2'
注意:使用states: 'Up','Down'
填充状态列表。
另请注意,它部分起作用。
更确切地说,Spring Boot不想支持@PropertySource
正确支持yml文件是一个“已知”事实,因为这不是@Propertysource
在Spring boot项目中使用的“标准” ...这是讨论的链接:https://github.com/spring-projects/spring-framework/issues/18486。
您也可以像推荐的那样尝试使用EnvironmentPostProcessor
:https : //docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-customize-the-environment-or-application-context
我建议任何人都可以尝试application.yml,除非您有利用限制。
一种解决方案是将您的内容复制users.yml
到application.yml
最终满足您需求的内容中。
src / main / resources / application.yml
test: 'yeah im tested'
states:
- 'Up'
- 'Down'
users:
-
username: 'Gienek'
pw: 'niegienek'
roles:
- 'rola1'
- 'rola2'
UserConfig.java
@Data
@Configuration
@ConfigurationProperties
@EnableConfigurationProperties
public class UserConfig {
...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句