java - 防止空 @Value 的运行时失败

标签 java spring-boot

我正在尝试加载 keystore 并检查过期日期。所以说我有两个值

@Value(“${connections.keystoreA}”)
private String keystoreA;

@Value(“${connections.keystoreB}”)
private String keystoreB;

有些环境具有其中一个值,有些环境则两者都有。我的问题是,除了使用默认值之外,是否有任何方法可以防止在运行时失败(如果其中一个值不存在)?

编辑:我也想这样做,以便将来可以添加其他配置,keystoreC、keystoreD 等

最佳答案

您可以在 application.properties 中执行 if/else 并设置默认值。 例如,您的 application.properties 可能类似于:

my.connections.keystoreA=${connections.keystoreA:defaultA}
my.connections.keystoreB=${connections.keystoreB:defaultB}

想法是:如果connections.keystoreA不存在,则将注入(inject)字符串defaultA

之后,您可以注入(inject)值:

@Value("${my.connections.keystoreA}") 
private String keystoreA;    
@Value("${my.connections.keystoreB}") 
private String keystoreB;

这样做,spring就不会在运行时失败。

另一种选择是在必要时直接在字段中使用此 if/else 来设置默认值:

@Value("${connections.keystoreA:defaultA}") 
private String keystoreA;    
@Value("${connections.keystoreB:defaultB}") 
private String keystoreB;

关于java - 防止空 @Value 的运行时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51029636/

相关文章:

java - 迭代并从 map 中删除

java - Spring ROO 类似控制台应用程序

java.net.SocketException : Connection reset With HTTPConnection

java - Spring Neo4J REST 错误 - nodeStateTransmitter

spring - Thymeleaf 模型属性是否不允许以 'is' 开头?

spring - 将自定义 UserDetailsS​​ervice 添加到 Spring Security OAuth2 应用程序

java - 在 Android 中通过 IPC 传递队列对象

java - SQLite:java.sql.SQLException:结果集是TYPE_FORWARD_ONLY?

spring-boot - springfox/swagger2与springboot应用程序集成

spring - 如何在 Spring Boot/Spring Security 中允许用户只访问他们自己的数据?