私は春に新たなんだ、私は知っているしたいと思います:@PostConstruct注釈と春のライフサイクル
私は@Component(春)で注釈されたJavaクラスを持っていると私は@PostConstructアノテーションを付けるメソッドを持っているの内側。クラスは、別のクラスの@Autowired注釈付きフィールドによって参照されます。 @PostConstructが呼び出された後にクラスが注入されるだけであると仮定できますか?あなたが求めている場合、Beanが
「注射用」と見なされる前に@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")
}
}
はいyuoはそれを取ることができる...春は、まず、最終的@PostConstructアノテーションをチェックし、最後にBeanを注入し、Beanを作成します。いずれにしても、populateMetricsRegistryメソッドで非スプリングオブジェクトを使用していることがわかります。この場合、このオブジェクト(メトリックオブジェクト)では、正しいライフサイクルを管理するのが自分の責任です。 –
私は_anotherクラスについて混乱しています_。あなたの 'AuthenticationMetrics'クラスがインスタンス化され、そのフィールドが注入されます(このサンプルではnone)、' @ PostConstruct'が呼び出されます。 'AuthenticationMetrics'をどこかに注入している場合は、' @ PostConstrtuct'が呼び出される前に注入されます。 –