【发布时间】:2013-08-18 15:46:00
【问题描述】:
我有一个关于声明 CDI 注释 bean 的 jar 的问题,并在 spring 上下文和 EE6 上下文中使用。
这个 jar,比如 service.jar,包含用限定符注释的类(@Qualifier,允许您声明自己的注释,例如 @DataAccessObject 以识别您的 bean),并具有用 @ 注释的私有成员987654325@.
它是用 maven 编译的,它对javax.javaee-api 的依赖被声明为provided,因为只有在 EE6 上下文中部署时才需要这些类。
不过,有一些我不明白的地方。在这个service.jar 中,一旦编译,无论我是否将其部署在EE6 上下文中,字节码都会引用javax.inject.@Inject 等类。
那么,为什么我的 spring 应用程序 - 在其类路径中没有 javax.javaee-api jar - 能够正确加载其配置并运行?
当我得知 Spring 提供对 @Inject (JSR 330) 注释的支持时,我更加困惑。
有人能告诉我吗?
谢谢。
【问题讨论】:
-
这有很长的历史,主要是政治性的,虽然不完全,但它提供了一些启示。 stackoverflow.com/questions/7238407/will-spring-support-cdi