【发布时间】:2012-10-15 05:14:09
【问题描述】:
当我将我的应用程序部署在不支持 Java EE 6 的 Appserver 中时,我可以在我的 Spring 应用程序中使用 @Inject 注释吗?
@Inject 是在 Java EE6 中引入的,Java EE 5 不支持它
【问题讨论】:
标签: spring jakarta-ee annotations code-injection
当我将我的应用程序部署在不支持 Java EE 6 的 Appserver 中时,我可以在我的 Spring 应用程序中使用 @Inject 注释吗?
@Inject 是在 Java EE6 中引入的,Java EE 5 不支持它
【问题讨论】:
标签: spring jakarta-ee annotations code-injection
当您在 Spring 管理的组件(Spring bean)中使用 @Inject 时,其功能由 Spring 实现,因此您不需要其他任何东西来使其工作。
JavaEE 6 中的@Inject 支持是关于由应用服务器(EJB 等)管理的组件。
【讨论】:
Spring 有 a synonymous @Autowired annotation 具有相同的效果。由于它是由 Spring 自己提供的,因此它应该可以在任何支持注解的 Java 版本上使用。
【讨论】:
@Inject?
javax.inject.Inject 类,因此您需要在 Java 6 JRE 上运行。不过,AppServer 本身可能不需要任何特殊支持。
在下面的示例中,可以使用 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
【讨论】:
简而言之,你可以。如果您使用的是 Spring(>= 版本 3),Spring 将根据其 bean 的 @Inject 注释执行其依赖注入。
总之,这完全取决于您所说的“可以使用”是什么意思。注释不过是元数据。没有人能阻止你使用 @Inject 来执行一个完全不相关的功能,只要你检查注解并做任何你想做的事情
【讨论】: