我有一个正确返回值的配置服务器,我可以毫无问题地提取值,除了这个我认为是由于使用@PostConstruct 的脚本。但是,我尝试了多种解决方案均未成功。有没有人对更改有任何建议以使其工作?
配置服务器的输出 `
{
"name": "auth-service",
"profiles": [
"jdbc"
],
"label": "1.0",
"version": null,
"state": null,
"propertySources": [
{
"name": "auth-service-jdbc",
"source": {
"spring.datasource.url": "jdbc:mysql://x.x.x.x:3306/test?useUnicode=true&useLegacyDatetimeCode=false&serverTimezone=UTC&createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true&useSSL=false",
"spring.datasource.username": "xxxx",
"spring.datasource.password": "xxxxx",
"jwt.secret": "xxxxxxx",
"jwt.expiration": "86400"
}
}
]
}
`
我遇到问题的脚本,secret 和 expirationTime 总是空的,除非包含在 Bootstrap.yml 中,这是不实用的。 `
@Component
public class JwtUtil {
@Value("${jwt.secret}")
String secret;
@Value("${jwt.expiration}")
String expirationTime;
private Key key;
@PostConstruct
public void init() {
this.key = Keys.hmacShaKeyFor(secret.getBytes());
}
`
到目前为止,我已经尝试使用环境而不是@Value、构造函数以及使用和不使用@PostConstruct。我设法让它获取值的唯一方法是当它们在 Application.yml 或 Bootstrap.yml
中时在重写 JWT 实现后,我能够通过不使用 @PostConstruct 来解决这个问题