Spring io @Autowired:空白的final字段可能尚未初始化

我认为这是一个非常基本的问题-

关于此错误,有几种类型的问题,但在前5个结果中没有一个具有Spring的细微差别。

我有一个在spring编写的REST-ful webapp的开始。我正在尝试将其连接到数据库。

我有一个名为Workspace的实体,正在尝试使用bean的弹簧注入(正确的术语?)来保存工作区实体的实例

package com.parrit;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.util.Assert;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RestController;

import com.parrit.models.Workspace;

import com.parrit.models.WorkspaceRepository;

@RestController

@RequestMapping("/workspace")

public class WorkspaceController {

@Autowired

private final WorkspaceRepository repository;

@RequestMapping(method = RequestMethod.POST)

void save( @RequestBody String workspaceHTML) {

Workspace ws = new Workspace();

ws.setHTML(workspaceHTML);

repository.save(ws);

}

}

我的错误是在存储库变量上private final WorkspaceRepository

repository。编译器抱怨它可能没有初始化,并且尝试运行该应用程序会产生相同的结果。

如何在我的控制器中获取此存储库对象的实例,以便对其执行保存操作?

回答:

@Autowired球场上拥有和决赛是矛盾的。

后者表示:此变量只有一个值,并且在构造时初始化。

前者说:Spring将构造对象,将此字段保留为空(其默认值)。然后,Spring将使用反射类型为WorkspaceRepository的bean初始化此字段。

如果要自动绑定最终字段,请使用构造函数注入,就像您自己进行注入一样:

@Autowired

public WorkspaceController(WorkspaceRepository repository) {

this.repository = repository;

}

以上是 Spring io @Autowired:空白的final字段可能尚未初始化 的全部内容, 来源链接: utcz.com/qa/426853.html

回到顶部