java - 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() ;
}
}
解决方案
作为参数添加SomeService
到构造函数,并@Autowired
从字段中删除。现在它不可能为空。
或者,将构造函数中的代码移动到@PostConstruct
方法中。
您应该阅读在 Spring 启动时运行设置数据。该指南首先列出您的代码作为如何不这样做的示例。
推荐阅读
- postgresql - PostgreSQL:如何在子查询中返回多行并查找每行的百分比?
- mysql - MySQL:如何获得系列中每个事件的排行榜位置
- c# - 在 C# 中搜索文件
- r - 计算 R 中特定日期范围的平均值
- ignite - 使用公共和私有 ip 连接到 Ignite 服务器
- azure - azure 事件网格 - 使用 azure 存储队列作为 endpointType 创建订阅
- php - 如何将默认表格内容显示为不同的,当单击按钮时,UI 中的同一个表格中的表格内容应该不同?
- wordpress - WPBakery Grid builder 获取帖子内容
- mongodb - MongoDB $从带有过滤器的数组中提取
- javascript - 带有ajax的表单-没有刷新页面的消息表单php