men*_*.ye 9 java spring annotations
我对下面代码的结果有点困惑.
ParentController:
@Controller
public abstract class ParentController{
@PostConstruct
public void init(){
System.out.println("Parent-----PostConstruct");
}
public ParentController(){
System.out.println("Parent-----constructor");
}
}
Run Code Online (Sandbox Code Playgroud)
ChildController:
@Controller
public class ChildController extends ParentController {
@PostConstruct
public void init() {
System.out.println("Child-----PostConstruct");
}
public ChildController(){
System.out.println("Child-----constructor");
}
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
Parent ----- constructor
Child ----- constructor
Child ----- PostConstruct
Parent ----- PostConstruct
我不知道为什么parent的postConstruct是在child的postContruct之后.
发生这种情况是因为您正在重写 @PostConstruct 方法。
到底是怎么回事:
调用子类的构造函数。
子类调用的构造函数super
调用父类的构造函数
执行父类的构造函数
父类构造函数完成
子类的构造函数被执行
子类的构造函数完成
子类的@PostConstruct被调用、执行、完成(因为我们调用了子类的构造函数)
父类的@PostConstruct被调用、执行、完成(因为我们调用了父类的构造函数)
UPD:(感谢@Andreas!)
归档时间: |
|
查看次数: |
3818 次 |
最近记录: |