【发布时间】:2020-06-05 06:11:39
【问题描述】:
我将 Weld 用于 CDI。 我正在寻找一种方法来运行包含注入 bean 的周期性线程。
主要我想创建:
executorService.scheduleWithFixedDelay(new ExampleThread(), 1, 1, TimeUnit.SECONDS);
ExampleThread 在哪里:
@ApplicationScoped
public class ExampleThread implements Runnable {
@Inject
private SomeBean someBean;
public ExampleThread() {}
@Override
public void run() {
someBean.do();
}
}
问题是,一旦我使用 new() 创建了 ExampleThread,它就会使其内部 bean 无法使用。 有没有办法以可行的方式创建 ExampleThread?
【问题讨论】:
-
答案提供了一些有效的指针——我的偏好是通过构造函数传递依赖项。但是您能否提供更多关于为什么您希望在每次计划执行时重新创建
Runnable的信息?我的印象是使用@ApplicationScopedbean 本身的注入实例可能就足够了。
标签: java jakarta-ee cdi weld