2012-10-31 124 views
29

如果您有一个使用@PostConstruct批注的父类,并且您创建了一个从其派生的子类。每次创建子类的实例时,是否会自动调用@PostConstruct方法?因为每次创建父项的实例时都会调用@PostConstruct方法。派生自具有批注的类@PostConstruct

我知道,在孩子班级,我们自动呼叫​​,无需我们的称呼。

我只是不确定是否@PostConstruct注释是自动调用,如果该子类调用​​构造函数。

+2

认沽'println()一样'在这两种方法的调用,启动你的应用程序,看看会打印。 – millimoose

+1

像@millimoose建议的那样,你可以自己测试并回答你的问题。我认为这对未来的其他人会有好处。 –

+1

这可能取决于注射的过程。我认为'@ PostConstruct'可以被[tag:cdi]和[tag:ejb3]识别,也可能被其他框架识别,并且这些可能会有不同的行为。你在这里使用什么框架? –

回答

29

测试完这个场景后,基类中的@PostConstruct方法将自动被调用。

流程是这样的:

  1. 在创建子类,你在子类的构造函数,你再被自动强行插入父类。
  2. 一旦父类构造函数完成,您将被发送回子类的构造函数。
  3. 孩子一旦类的构造完成后,你会被自动发送到父类的方法@PostConstruct
+10

在我的测试中,如果你覆盖超级的'@ PostConstruct',那么首先调用这个孩子的。如果你没有压倒一切,那么父母的首先被调用。 – Basil

相关问题