当我有 All Args 构造函数时,我不应该在 Spring Boot 中使用 @PostConstruct 吗?

问题描述 投票:0回答:2

在我们的项目中,我们不使用 setter 或归档注入,我们仅使用构造函数注入,并且我知道选项 1. 和 2. 都可以工作。

    在这种情况下,在构造函数中使用 beans 是否不安全?
  • 或者 spring boot 2+ 做了一些事情,我应该更好地使用选项 1,而不是 2。我无法想象选项 1 会出错的情况
@Component @ConfigurationProperties("config") public class ServiceConfigProperties { // .... some code }

会不安全吗? - 但看起来更好
  1. @Component public class Service { private boolean skipCheck; public Service(ServiceConfigProperties configProps) { this.skipCheck = configProps.isSkipCheck(); } }
不会不安全吗?
  1. @Component public class Service { private boolean skipCheck; private ServiceConfigProperties configProps; public Service(ServiceConfigProperties configProps) { this.configProps= configProps; } @PostConstruct public void initConfig() { this.skipCheck= configProps.isSkipCheck(); } }
有一些注意事项
java spring spring-boot constructor-injection postconstruct
2个回答
1
投票

永远不要使用@PostConstruct,它会完全出错,具体取决于您如何自定义 Spring Boot 设置(线程池、持久性数据源等...)。您应该使用 ApplicationEvent

来代替

0
投票

< ApplicationReady>

© www.soinside.com 2019 - 2024. All rights reserved.