我正在阅读Oracle Java EE 6教程,并在“作为可注入对象的Beans”部分下,它说
可以注入以下类型的对象:
(几乎)任何Java类
会话豆......
不能注入的Java类的示例是什么?他们只是提到了一些理论上的技术限制,还是可以注入的类的已知限制?
从规格,ch。2.2.1:
几乎任何Java类型都可以是bean的bean类型:
- bean类型可以是接口,具体类或抽象类,并且可以声明为final或具有final方法。
- Bean类型可以是带有实际类型参数和类型变量的参数化类型。
- bean类型可以是数组类型。仅当元素类型相同时,才将两个数组类型视为相同。
- bean类型可以是原始类型。原始类型被认为与java.lang中其对应的包装器类型相同。
- Bean类型可以是原始类型。
类型变量不是合法的bean类型。包含通配符类型参数的参数化类型不是合法的bean类型。
请注意,如第6.3节“普通作用域和伪作用域”中所定义,对于具有正常作用域的bean,在第5.4.1节“不可代理的bean类型”中指定了某些附加限制。
然后是引用的部分:
某些合法的bean类型不能由容器代理:
- 没有没有参数的非私有构造函数的类,
- 声明为final或具有final方法的类,
- 基本类型
- 和数组类型。
综上所述:任何Java类型(包括接口,抽象类)都可以是CDI bean,除非它是“普通作用域”,并且至少满足以下条件之一:
int
,double
等)或阵列正常范围的(例如@Application-
,@Session-
,@RequestScoped
)的装置,将需要由容器中,从而在上述的限制可能被替换为被代理“不是可代理”。@Dependent
并且@javax.inject.Singleton
是不正常的范围,他们是伪范围。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句