如果 ${service.property}
不是空字符串,我该如何检查,如果是,则抛出某种可读异常?它必须在 Bean 创建期间发生。
@Component
public class Service {
@Value("${service.property}")
private String property;
}
我正在寻找最简单的方法(最少编写的代码)。如果使用注释会很棒。
我目前的解决方案是在属性的 setter 中执行“手写”验证,但是对于这样简单的事情来说代码有点太多了。
提示:我正在寻找一些使用 SpEL 的方法,因为我已经在 @Value
中使用了它,但据我所知,它不会那么容易/干净。但可能忽略了一些事情。
澄清:预期的行为是应用程序将不启动。目标是确保设置所有属性,尤其是字符串属性不为空。错误应该说清楚,缺少什么。我不想设置任何默认值!用户必须全部设置。
最佳答案
您可以将组件本身用作属性占位符。然后您可以使用任何您想要的验证。
@Component
@Validated
@PropertySource("classpath:my.properties")
@ConfigurationProperties(prefix = "my")
public class MyService {
@NotBlank
private String username;
public void setUsername(String username) {
this.username = username;
}
...
}
您的my.properties 文件将如下所示:
my.username=felipe
关于java - 使用 Spring @Value 时如何进行简单的属性验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29798190/