如何配置启动托管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?的主要内容,如果未能解决你的问题,请参考以下文章

Spring下如何配置bean

Java面试题:Spring中如何使用注解来配置Bean?有哪些相关的注解?

如何在 Spring Boot 2.1.0 启动器配置中将 spring.main.allow-bean-definition-overriding 设置为 true

如何让是spring启动时加载一个类。这里类实现了读取xml配置数据到内存中(不是属性文件)

如何延迟 Spring JPA 自动配置直到 bean 运行?

sping揭秘4某些无法注册到IOC容器的对象如何交给spring托管