Java 使用@Value会导致未满足的PendencyException
我有一个类ApiRest,它有一个名为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表示的未满足依赖关
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();
}
可以进一步阅读请出示您的构造函数。从中的异常来看,似乎存在一些问题