Spring Boot 2.0.0中的@Value Injection注入null

时间:2018-03-30 08:14:58

标签: java spring spring-boot

因此。在阅读了官方文档并发现我正在做的事情没有任何问题之后,我只是用尽了想法。

我的application.properties:

vz.info.version=0.2.8

我的属性组件

import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

@Configuration
public class VZProperties {

  @Value("${vz.info.version}")
  @Getter
  @Setter
  private String apiVersion;

}

apiVersion我到处都是空的。 龙目岛似乎不是问题。我从文档中遗漏了什么?

修改

我想这样称呼:

import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.Lists;
import lombok.Getter;

import java.io.Serializable;
import java.util.List;

public class VZNFCTagResponse implements Serializable{

  private static final long serialVersionUID = -2824767225275894898L;

  @Autowired
  private VZProperties properties;

  public VZNFCTagResponse(List<VZNFCTagAction> tagList){
    this.tags = tagList;
  }

  /*...*/

  @JsonProperty
  public String apiVersion(){
    return this.properties.getApiVersion();
  }      
}  

在通过注入环境进行检查以使其运行之后,该属性也不存在。

2 个答案:

答案 0 :(得分:2)

您的班级VZNFCTagResponse未注册为Spring Beans。 将其注释为@Component并使用DI注入他。

答案 1 :(得分:1)

避免将其变为组件并且仍然从DI中受益的唯一方法是将其标记为@Configurable并启用加载时编织。你不能将它注入创建VZNFCTagResponse的组件并将该版本作为构造函数参数传递吗?