如何配置启动托管bean?
Posted
技术标签:
【中文标题】如何配置启动托管bean?【英文标题】:How to configure a start up managed bean? 【发布时间】:2012-07-13 13:31:46 【问题描述】:我希望托管 bean 在应用程序加载时在我的 JSF Web 应用程序中启动时在内部运行。如何在 Glassfish 中编写此类并进行配置?
【问题讨论】:
你试过@ManagedBean(eager=true)
吗?如果您使用的是 CDI(@Named 而不是 @ManagedBean),那么您将不得不“观察”应用程序初始化......使用类似这样的东西......public void init(@Observes @Initialized WebApplication webApplication) //do Something
(实际上我没有在 glassfish 中尝试过,我已经在jBoss AS 7,您可能需要在其他服务器上进行一些配置...检查this out...
【参考方案1】:
在带有 CDI 的 JSF 中,observe 是 application scope 的 initialization。
@Named
@ApplicationScoped
public class App
public void startup(@Observes @Initialized(ApplicationScoped.class) Object context)
// ...
public void shutdown(@Observes @Destroyed(ApplicationScoped.class) Object context)
// ...
当有OmniFaces 在手时,这可以用@Eager
来简化。
@Named
@Eager
@ApplicationScoped
public class App
@PostConstruct
public void startup()
// ...
@PreDestroy
public void shutdown()
// ...
在带有 now deprecated javax.faces.bean
注释的 JSF 2.2 中,使用 application scoped managed bean 初始化 eagerly。
@ManagedBean(eager=true)
@ApplicationScoped
public class App
@PostConstruct
public void startup()
// ...
@PreDestroy
public void shutdown()
// ...
【讨论】:
以上是关于如何配置启动托管bean?的主要内容,如果未能解决你的问题,请参考以下文章
Java面试题:Spring中如何使用注解来配置Bean?有哪些相关的注解?
如何在 Spring Boot 2.1.0 启动器配置中将 spring.main.allow-bean-definition-overriding 设置为 true
如何让是spring启动时加载一个类。这里类实现了读取xml配置数据到内存中(不是属性文件)