以应用程序启动的 CDI bean
CDI bean that starts with the application
有什么方法可以用应用程序启动 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
注释。
确保您的 tomcat7 变体支持 CDI(参见 tomcat version comparison)
然后,
@Startup
@Singleton
public class MyBean {
@PostConstruct
private void init() {
// place your initialization code here
}
}
有什么方法可以用应用程序启动 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
注释。
确保您的 tomcat7 变体支持 CDI(参见 tomcat version comparison) 然后,
@Startup
@Singleton
public class MyBean {
@PostConstruct
private void init() {
// place your initialization code here
}
}