Java 类型/类是否需要使用@Component或@Service进行注释才能对其进行注释';s属性的@Value
我们有下面的代码,它适用于我们,我们可以通过application.properties设置visible的值Java 类型/类是否需要使用@Component或@Service进行注释才能对其进行注释';s属性的@Value,java,enums,spring-annotations,Java,Enums,Spring Annotations,我们有下面的代码,它适用于我们,我们可以通过application.properties设置visible的值 public enum Checker { RED ("#FF0000"), YELLOW ("#FFFF00"); private final String value; @Value("${visible:true}") private String visible; private Checker(final String value) {
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 annotation的类进行注释 @值表示“从属性文件中获取值”和“从属性文件中获取真值” ${visible:true}如果属性文件中不存在,则表示默认值 为了更好地理解@component,请查看以下主题: 对于@value用法,您可以查看Baeldung的这篇文章: Baeldung网站对于春季开机信息非常有用! 我建议您将其添加到书签中;)
我希望我能帮点忙 答案是肯定的,但并不确切。正确的说法是,类实例必须是Springbean,才能
@Value
工作。添加@组件
,@服务
使类成为spring管理的bean,但还有其他方法,如使用@bean
在一般的Spring工作中,通过使用<代码>处理器< /C> >更改或添加声明的bean,与<代码> @事务> <代码>相同,<代码> >Value>代码>只在bean中生效,是的,您可以注释任何类中的任何方法,代码将编译,但Spring将不会简单地考虑它。 从@Value开始
请注意,@Value注释的实际处理是由 BeanPostProcessor如果(可见)如何工作?这不是一个字符串吗?但这只适用于spring管理的bean,正如您的链接所提到的,对吗?为什么enum是spring管理的bean?确切地说,我在本文中找到了一个解释。