我有一个关于声明 CDI 注释 bean 的 jar 的问题,并在 spring 上下文和 EE6 上下文中使用。
比如说,这个 jarservice.jar
包含用限定符注释的类(@Qualifier
允许您声明自己的注释,例如@DataAccessObject
为了标识您的 bean),并且具有用 .注释的私有成员@Inject
。
它是用 maven 编译的,它的依赖javax.javaee-api
声明为provided
,因为只有在 EE6 上下文中部署时才需要这些类。
不过,有一点我不明白。在此service.jar
,一旦编译,无论我是否将其部署在 EE6 上下文中,字节码都会引用诸如javax.inject.@Inject
.
那么,为什么我的 spring 应用程序(其类路径中没有javax.javaee-api
jar)能够正确加载其配置并运行?@Inject
当我得知 Spring 提供对(JSR 330) 注释的支持时,我更加困惑。
任何人都可以启发我吗?
谢谢。