【问题标题】:Using @Inject in Spring with appserver not compatible with Java EE 6在 Spring 中将 @Inject 与与 Java EE 6 不兼容的 appserver 一起使用
【发布时间】:2012-10-15 05:14:09
【问题描述】:

当我将我的应用程序部署在不支持 Java EE 6 的 Appserver 中时,我可以在我的 Spring 应用程序中使用 @Inject 注释吗?

@Inject 是在 Java EE6 中引入的,Java EE 5 不支持它

【问题讨论】:

    标签: spring jakarta-ee annotations code-injection


    【解决方案1】:

    当您在 Spring 管理的组件(Spring bean)中使用 @Inject 时,其功能由 Spring 实现,因此您不需要其他任何东西来使其工作。

    JavaEE 6 中的@Inject 支持是关于由应用服务器(EJB 等)管理的组件。

    【讨论】:

      【解决方案2】:

      Spring 有 a synonymous @Autowired annotation 具有相同的效果。由于它是由 Spring 自己提供的,因此它应该可以在任何支持注解的 Java 版本上使用。

      【讨论】:

      • 是的,我知道。那么,在没有 Java EE 6 兼容的 AppServer 的情况下,不可能使用@Inject
      • @MyTitle,由于 Java 5 中不存在 javax.inject.Inject 类,因此您需要在 Java 6 JRE 上运行。不过,AppServer 本身可能不需要任何特殊支持。
      【解决方案3】:

      在下面的示例中,可以使用 JSR 330 的 @Inject 注释代替 Spring 的 @Autowired。 @Inject 没有必需的属性,这与 Spring 的 @Autowire 注释不同,后者有一个必需的属性来指示注入的值是否是可选的。如果类路径中有 JSR 330 JAR,则会自动启用此行为。

      春季文档......

      http://static.springsource.org/spring/docs/3.0.0.RC2/reference/html/ch03s09.html

      【讨论】:

        【解决方案4】:

        简而言之,你可以。如果您使用的是 Spring(>= 版本 3),Spring 将根据其 bean 的 @Inject 注释执行其依赖注入。

        总之,这完全取决于您所说的“可以使用”是什么意思。注释不过是元数据。没有人能阻止你使用 @Inject 来执行一个完全不相关的功能,只要你检查注解并做任何你想做的事情

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-02
          • 1970-01-01
          • 1970-01-01
          • 2012-04-29
          • 1970-01-01
          • 1970-01-01
          • 2012-08-12
          相关资源
          最近更新 更多