gpt4 book ai didi

java - JSF2 ApplicationScope bean实例化时间?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:46 25 4
gpt4 key购买 nike

在我看来,@ApplicationScoped bean 仅在第一次使用 EL 在页面中访问时才启动。

当我查询 ApplicationMap 时,是否会创建 @ApplicationScoped bean?

ExternalContext ec = currentInstance.getExternalContext(); result =
ec.getApplicationMap().get(beanName);

在加载 XHTML 页面之前,我还能如何触发应用程序作用域 bean 的实例化?

最佳答案

您可以在 @ManagedBean 中使用 eager=true声明。

@ManagedBean(eager=true)
@ApplicationScoped
public class Config {

// ...

}

这样,bean 将在 webapp 启动时自动创建。

除此之外,您还可以使用 Application#evaluateExpressionGet()以编程方式评估 EL 并因此在必要时自动创建 bean。另请参阅 this answer 上的示例.

FacesContext context = FacesContext.getCurrentInstance();
Confic config = (Config) context.getApplication().evaluateExpressionGet(context, "#{config}", Config.class);
// ...

您也可以将其作为 @ManagedProperty 注入(inject)将 bean 放在您需要的地方。

@ManagedBean
@RequestScoped
public class Register {

@ManagedProperty("#{config}")
private Config config;

@PostConstruct
public void init() {
// ...
}

// ...
}

JSF 将在注入(inject)父 bean 之前自动创建它。它在 @PostConstruct 之外的所有方法中都可用。

关于java - JSF2 ApplicationScope bean实例化时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6967182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com