我们有以下代码,它对我们有用,我们可以通过application.properties设置可见值
public enum Checker {
RED ("#FF0000"),
YELLOW ("#FFFF00");
private final String value;
@Value("${visible:true}")
private String visible;
private Checker(final String value) {
this.value = value;
}
public String getValue() {
if (visible) {
return value;
}
else {
return "#000000";
}
}
}
现在,为了更好地理解它,难道不应该在可以进行值注入之前将其初始化为Bean吗?
您不需要注释使用@value注释的类@Value表示“从属性文件中获取值”,而真值来自$ {visible:true}表示属性文件中不存在的默认值
为了更好地了解@component,请查看以下主题:What's the use of @Component in spring?
有关@value的用法,您可以阅读Baeldung的这篇文章:https://www.baeldung.com/spring-value-annotation
Baeldung网站对于春季引导信息非常有用!我建议您为它添加书签;)
希望我能有所帮助!
答案是肯定的,但不完全是。正确的说法是,该类实例必须是bean,才能成为@Value才能工作。添加@Component
,@Service
使类成为Spring托管bean,但是还有其他使用@Bean
的方法。
通常,通过更改或向声明的Bean添加功能来进行春季工作,与@Transactional
相同,@Value
仅在是Bean时才生效,是的,您可以注释任何类中的任何方法,并且代码可以编译,但是spring会简单地不考虑它。
来自@Value documentation
请注意,@ Value批注的实际处理是由BeanPostProcessor