Java 类型/类是否需要使用@Component或@Service进行注释才能对其进行注释';s属性的@Value

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) {

我们有下面的代码,它适用于我们,我们可以通过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) {
    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?确切地说,我在本文中找到了一个解释。