我用 Quarkus 做了一些实验,但我很难理解
@RequestScoped
的工作原理。来自 Spring,我希望下面的代码不工作并抛出异常:
@ApplicationScoped
public class AppLifecycleBean {
@Inject
MyBean myBean;
void onStart(@Observes StartupEvent ev) {
myBean.doSomething();
}
}
@RequestScoped
public class MyBean {
public void doSomething() {
System.out.println("Hello!");
}
}
请求作用域 bean 被正确注入为代理。但是即使没有可用的请求,在代理上调用方法似乎也能正常工作?
如果一个 bean 类有注释
@RequestScoped
,CDI 将在第一次调用 bean 方法时懒惰地实例化 bean。这样的 bean 仅存在于用于处理单个 HTTP 请求的链中。