【发布时间】:2017-11-24 15:43:52
【问题描述】:
我是Spring新手,我想知道:
我有一个用@Component (spring) 注释的java 类,在里面我有一个用@PostConstruct 注释的方法。然后该类被另一个类中的@Autowired 注释字段引用。我可以假设只有在调用@PostConstruct 之后才注入该类吗?
@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");
}
}
【问题讨论】:
-
是的,你可以假设它...... Spring首先创建bean,然后检查最终的@PostConstruct注解,最后注入bean。无论如何,我看到您在 populateMetricsRegistry 方法中使用了非弹簧对象。在这种情况下,对于这个对象(指标对象),管理正确的生命周期是您自己的责任
-
我对另一个类感到困惑。您的
AuthenticationMetrics类将被实例化,其字段将被注入(本示例中没有),然后将调用@PostConstruct。如果你在某处注入AuthenticationMetrics,它将在somewhere的@PostConstrtuct被调用之前被注入。
标签: java spring ioc-container