【发布时间】:2018-08-02 10:19:29
【问题描述】:
有什么区别
public UserBean() {
// create the session state
state = new BigInteger(64, new SecureRandom()).toString(32);
}
和
public UserBean() {
init();
}
@PostConstruct
public void init() {
// create the session state
state = new BigInteger(64, new SecureRandom()).toString(32);
}
其中状态是类的众多属性之一。
【问题讨论】:
-
State 会在 UserBean 被实例化时被实例化。在其他情况下,UserBean 将被实例化,然后状态将被实例化。
-
第一个恰好在构建新实例初始化
state之后,第二个在初始化调用方法init(初始化state)并在触发事件后构造时再次调用init方法。@PostConstruct在 bean 的所有上下文初始化时触发。 -
不应在构造函数中调用可覆盖的方法(使其成为最终方法)。由于@PostConstruct,这里也不需要它。先前评论的链接说明了其余部分。
标签: java constructor initialization