创建模型时自动装配的对象为空

Autowired object is null while creating model

我正在为一个简单的问题而苦苦挣扎。 通过 Autowired 为我的服务创建模型时,对象始终为空。这是我定义组件的方式。 控制器

@RequestMapping("")
@RestController
@Log
public class Controller {

    @Autowired
    private JiraService jiraService;
...

服务:

@Component
@Getter
@Setter
@Log
public class JiraService {
    @Autowired
    JiraClientModel jiraClientModel;

    public JiraService(@Value(value = "${jira.credentials.userName}") String userName,
                       @Value(value = "${jira.credentials.password}") String password,
                       @Value(value = "${jira.url}") String url,
                       @Value(value = "${jira.jql.query}") String query) throws URISyntaxException {
        jiraClientModel.setSomeValues // here I want to assign some of my values but Model is null

    }

还有我的模特:

@Component
@Getter
@Setter
public class JiraClientModel {
    private SearchRestClient searchRestClient;
    private String query;
}

您的应用程序是否在某处生成了 JiraClientModel 的实例(在用 ​​@Bean 注释的方法中)?

此外,你真的需要一个注入的实例,你可以自己创建:

@Component
@Getter
@Setter
@Log
public class JiraService {

    private final JiraClientModel jiraClientModel = new JiraClientModel();

    public JiraService(@Value(value = "${jira.credentials.userName}") String userName,
                       @Value(value = "${jira.credentials.password}") String password,
                       @Value(value = "${jira.url}") String url,
                       @Value(value = "${jira.jql.query}") String query) throws URISyntaxException {
        // ...
    }

此外,不再推荐 @Autowired 注入,构造函数注入是现代 Spring.

的方式

我个人认为由 Spring 生成普通对象而不是仅以“普通”Java 方式创建普通对象没有多大用处 - 我在使用服务时主要使用依赖注入或组件。