java - 以应用程序开头的 CDI bean
问题描述
有什么方法可以使用应用程序启动 CDI Bean?
我有这个豆子:
@ApplicationScoped
@Named
public class MyBean implements Serializable {
@Inject
private Helper helper;
@PostConstruct
public void init() {
helper.doThings();
}
}
我希望这个 bean 在部署时从应用程序开始。
我正在使用weld-servlet和tomcat7:
<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet</artifactId>
<version>${weld-servlet.version}</version>
<scope>compile</scope>
</dependency>
解决方案
尝试:
public void startup(@Observes @Initialized
(ApplicationScoped.class) Object context){
//your code here
}
这将确保该方法在启动时执行,并启动您的 bean。
或者您可以使用 OmniFaces@Eager
注释。
推荐阅读
- php - 类 api 在 laravel 上不存在反射异常
- computer-vision - 关于pyorch中的autograd,添加新的用户自定义层,我应该如何更新它的参数?
- plsql - 我有每两周(十四)个日期,我希望 op 为 14 个日期和金额,具体取决于交易日期和到期日
- rest - OPTIONS http 方法:如何正确实现它
- java - 服务类的@autowired 注释在@configure 类spring boot 中不起作用
- elasticsearch - Elasticsearch:节点突然停止工作,没有可用的分片异常
- php - PHP - 检查时间是否在 22:00 和 02:00 之间
- php - Laravel 数据透视表关系
- swift - 继承和构造函数。在 super.init 之前自用
- css - css手风琴与选中的单选按钮冲突