什么是Java CDI @Dependant默认作用域?
@Dependant CDI bean注入时的作用域是什么 @WebServlet?
java @WebServlet的CDI范围是什么?
答案 0 :(得分:0)
我将尝试简要地回答与CDI规范的链接,因为这是大多数问题的最终来源。
什么是Java CDI @Dependant默认作用域?
CDI spec has a whole chapter dedicated to this,您应该看一下。 它被归类为CDI范围,但具有不同的行为,即为每个注入点创建新实例。
将@Dependant CDI bean注入@WebServlet的作用域是什么?
我想您是在问这样一个bean的生命周期,从属bean的生命周期与被注入的bean的生命周期有联系。例如。只要您将其注入其中,依赖的bean就会“存在”。
现在,WebServlet
本身并不是一个纯bean,而是一个“注入目标”。这意味着您只需向CDI提供非上下文对象,并让其解析所有IP。在这种情况下,负责注射的人也是responsible for cleanup。我认为只要WebServlet
在这里工作,bean就能生存。
java @WebServlet的CDI范围是什么?
就像我之前暗示的那样,没有作用域,因为它不是bean,而是注入目标。这是一个(非上下文)对象,它不是CDI维护的(意味着其他人负责创建/销毁),而CDI仅允许您注入其中。
答案 1 :(得分:0)
我做了适当的测试。
原来,尝试将@Dependant CDI bean注入@WebServlet会导致运行时异常:
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001408: Unsatisfied dependencies for type DefaultScopedBean with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject protected com.example.WithDefaultScopeBeanServlet.bean
at com.example.WithDefaultScopeBeanServlet.bean(WithDefaultScopeBeanServlet.java:0)
at org.jboss.weld.manager.InjectionTargetFactoryImpl.createInjectionTarget(InjectionTargetFactoryImpl.java:81)
at org.jboss.weld.manager.InjectionTargetFactoryImpl.createInjectionTarget(InjectionTargetFactoryImpl.java:69)
实际上我缺少beans.xml文件。
添加后,可以将@Default CDI bean插入servlet中,类似于POJO。