Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用@Value会导致未满足的PendencyException_Java_Spring - Fatal编程技术网

Java 使用@Value会导致未满足的PendencyException

Java 使用@Value会导致未满足的PendencyException,java,spring,Java,Spring,我有一个类ApiRest,它有一个名为myKey的成员,我正试图通过从abc.properties文件中获取的值来设置该成员。当我使用@Value设置变量时,出现以下错误: 原因: org.springframework.beans.factory.unsatifiedDependencyException: 创建名为的bean时出错。。。 'org.springframework.boot.autoconfigure.jersey.jersey自动配置': 通过构造函数参数1表示的未满足依赖关

我有一个类ApiRest,它有一个名为
myKey
的成员,我正试图通过从
abc.properties
文件中获取的值来设置该成员。当我使用
@Value
设置变量时,出现以下错误:

原因: org.springframework.beans.factory.unsatifiedDependencyException: 创建名为的bean时出错。。。 'org.springframework.boot.autoconfigure.jersey.jersey自动配置': 通过构造函数参数1表示的未满足依赖关系

但是如果我直接用
私有字符串myKey=“my Key”设置值,它工作正常。我的代码如下所示:

@Path("api/data")
@Controller
@Produces(MediaType.APPLICATION_JSON)
public class ApiRest{
    @Value("${my-service.key}")
    private String myKey;

    private final MyClient myClient = MyClient.builder().key(myKey).build();

    //Remaining Code
    //I use myClient Object to use one of its method
}

为什么
@Value
无法将值注入变量中,以及如何解决此问题?

在实际注入之前,无法读取由SpringBean后处理器注入值的字段的值

参见
@Value

请注意,@Value注释的实际处理是由 BeanPostProcessor

这意味着您试图在此处过早读取字段
myKey
的值:

private final MyClient myClient = MyClient.builder().key(myKey).build();
您应该将字段
myClient
的初始化移动到另一个本身的方法,例如用
@PostConstruct

@PostConstruct
public void init() {
    this.myClient = MyClient.builder().key(myKey).build();
}

可以进一步阅读

请出示您的构造函数。从中的异常来看,似乎存在一些问题