首页 > 解决方案 > Spring Boot bean 初始化顺序

问题描述

我正在使用 spring boot 来开发一个简单的 REST API,但我坚持使用 spring 的命令来初始化我的应用程序的 beans。如何控制应用程序中 bean 初始化的顺序?

我使用的是spring boot 2.1.7,问题是spring尝试在ContactRestController所依赖的SomeService之前初始化ContactRestController,因此它最终在ContactRestController的构造函数中出现NullPointerException:

@RestController
public class ContactRestController {
    @Autowired
    private SomeService ;
   // no-args constructor 

    public ContactRestControlle(){
       this.someService.doStuff() ;
    }
}

标签: javaspringspring-boot

解决方案


作为参数添加SomeService到构造函数,并@Autowired从字段中删除。现在它不可能为空。

或者,将构造函数中的代码移动到@PostConstruct方法中。

您应该阅读在 Spring 启动时运行设置数据。该指南首先列出您的代码作为如何不这样做的示例。


推荐阅读