可能我的问题是一个微不足道的问题,但我以前从未使用过应用程序范围 bean。我需要应用程序 bean,因为我必须在数据库上执行耗时的事务。我的搜索根本满足不了我的好奇心。我不知道为什么,但我没有设法初始化 bean(它为空)或者应用程序崩溃了。所以我有一个应用程序范围bean
@ManagedBean(eager=true)
@ApplicationScoped
public class ApplicationContainer {
...
}
eager=true 我读到它告诉 JSF 在每次启动应用程序服务器(我使用 GlassFish)时启动 bean。
我在几个地方读到我只需要放置这个注释并且 bean 被初始化。对我来说不是...在我读到之后,如果我想将应用程序 bean 注入另一个 bean,我必须使用 @PostConstuct 注释
@ManagedBean
@SessionScoped
public class TestsBean implements Serializable {
private static final long serialVersionUID = 1L;
@ManagedProperty(value = "#{container}")
private ApplicationContainer container;
@PostConstruct
public void init() {
container.contructContainer();
}
这会在我将 TestsBean 注入的其他 bean 中产生错误...
- 如果应用程序 bean 在服务器启动时被初始化,它在应用程序 bean 的主体中调用什么方法来执行它需要的操作?或者在注入的bean中它是在post构造方法中完成的?
请告诉我处理应用程序 bean 的正确方法。我真的很困惑...
谢谢大家的时间!