Spring Boot 中的构造函数自动装配
使用 Spring Boot 时,使用自动装配将依赖项注入到 bean 构造函数有时会导致 null 值。这是因为自动装配发生在 bean 构造之后。
在给定的代码片段中,@Autowired applicationProperties bean 在 DocumentManager 构造函数中引用时为 null,但在 Convert 方法中引用时则不是 null。问题是自动装配发生在 构造函数执行之后。
解决方案:构造后初始化
要解决此问题,请使用 @ Bean 类中应初始化依赖项的方法上的 PostConstruct 注释。该方法将在 bean 构造后调用,可用于执行必要的初始化逻辑。
以下是如何修改 DocumentManager 类以使用 @PostConstruct 注解:
@Component public class DocumentManager implements IDocumentManager { private Log logger = LogFactory.getLog(this.getClass()); private OfficeManager officeManager = null; private ConverterService converterService = null; @Autowired private IApplicationProperties applicationProperties; // Remove initialization code from constructor public DocumentManager() { } @PostConstruct public void initialize() { startOOServer(); } ...
在此修改后的代码,初始化逻辑已移至initialize方法,该方法使用@PostConstruct注释。这确保了在 bean 构造后调用该方法时 applicationProperties bean 可用。
以上是为什么 Spring Boot 构造函数中自动装配失败?的详细内容。更多信息请关注PHP中文网其他相关文章!