我使用@ConfigurationProperties
注释从属性文件中填充了以下Test.java POJO类。我已经看到使用@Required
注释使其成为强制性的。
不是在setter方法级别定义注释,@Value
注释中是否有任何注释或选项可用于定义Mandatory,NotNull等条件?
@Component
@ConfigurationProperties(prefix = "com.test")
public class Test {
private String name;
@Required
public void setName(String name) {
name = name;
}
public String getName(String name) {
name = name;
}
}
这是使特定属性成为强制性的唯一方法吗?我可以将这些注释用于此类条件或验证的目的是什么?
答案 0 :(得分:3)
您可以对属性使用验证,而不是按照您设想的方式。
你可以做的是在字段(或设置器)本身上使用标准验证注释(如@NotNull
等)。
例如
@NotNull
@Size(min=2, max=10)
private String name;
查看文档的this部分
文档基本上说的是,您只需要在类路径上具有兼容的JSR303验证器实现,并使用相关的注释。 Spring Boot将负责其余的工作
答案 1 :(得分:1)
根据Spring docs(目前为4.1.6.RELEASE),Value
注释只有一个属性value
,包含属性的值。你可以在其中放置一个Spring EL表达式,但是这不会让你明确地表达像非null的概念。
此外,在您的代码段中,您使用@ConfigurationProperties
这是配置属性值的替代方法,与@Value
注释相比。
您正在这样做,您的Java getter / setter名称需要映射到属性名称,即前缀“com.test”+ getName()
/ setName()
匹配属性{{1} }
因此,您不需要com.test.name=...
注释来告诉Spring要使用哪个属性。
使用@Value
方法,您的getter / setter不必匹配属性名称,但您必须注释每个属性,例如@Value
在课堂上,@Value("${com.test.name}")
注释指向包含@PropertySource
的属性文件
我发现了一些包含代码示例的博客文章,这些帖子使用两种不同的方式来注入相同的属性:http://blog.codeleak.pl/2014/09/using-configurationproperties-in-spring.html和http://blog.codeleak.pl/2014/09/testing-mail-code-in-spring-boot.html