gpt4 book ai didi

java - @PostConstruct 注解和spring生命周期

转载 作者:IT老高 更新时间:2023-10-28 13:54:14 24 4
gpt4 key购买 nike

我是Spring新手,我想知道:

我有一个用 @Component (spring) 注释的 java 类,在里面我有一个用 @PostConstruct 注释的方法。然后该类被另一个类中的 @Autowired 注释字段引用。我可以假设仅在调用 @PostConstruct 之后才注入(inject)该类吗?

@Component
class AuthenticationMetrics {

private static final MetricRegistry metrics = new MetricRegistry();

final Counter requestsTotal;

final Meter guestLogins;

final Meter kfUserLogins;

final Timer guestLoginResponseTime;

final Timer kfLoginResponseTime;

@PostConstruct
public void populateMetricsRegistry() {
metrics.counter("authentication.requests.totals");
}
}

最佳答案

如果您要问的是在调用该 bean 中的 @PostConstruct 之后发生给定类的注入(inject),那么答案是肯定的 - 在考虑 bean 之前执行 @PostConstruct作为“可注入(inject)”

如果您询问是否在所有注入(inject)完成后(在同一个 bean 上)执行给定 bean 上的 @PostConstruct - 那么是 - 在之后执行 @PostConstruct注入(inject)被提交给给定的bean。这就是它存在的原因。通常您可以将 @PostConstruct Action 放入构造函数中。但是,当创建新对象(调用构造函数)时,尚未执行注入(inject) - 因此任何依赖于注入(inject)对象的初始化都会因 NPE 而失败。这就是为什么你需要 @PostConstruct

关于java - @PostConstruct 注解和spring生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44681142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com