为啥以及何时在 Spring 中使用 @Inject 而不是 @Autowired? [复制]
Posted
技术标签:
【中文标题】为啥以及何时在 Spring 中使用 @Inject 而不是 @Autowired? [复制]【英文标题】:Why and When use @Inject instead of @Autowired in Spring? [duplicate]为什么以及何时在 Spring 中使用 @Inject 而不是 @Autowired? [复制] 【发布时间】:2020-05-10 18:09:46 【问题描述】:自 Spring 3.0 起,Spring 支持标准 JSR 330:Java 的依赖注入。在 Spring 3 应用程序中,您可以使用
@Inject
而不是 Spring 的 @Autowired
来注入一个 bean。
@Named
而不是 Spring 的 @Component
来声明一个 bean。
我应该什么时候使用?
【问题讨论】:
【参考方案1】:@Inject
注解也有同样的作用,但它们之间的主要区别在于@Inject
是依赖注入的标准注解,@Autowired
是特定于 spring 的。
阅读更多:https://javarevisited.blogspot.com/2017/04/difference-between-autowired-and-inject-annotation-in-spring-framework.html#ixzz6Bwt3RUg9
【讨论】:
正确!但是当我们应该使用@Inject
和/或@Autowired
【参考方案2】:
长话短说,这些注解是 Spring Guy 为支持 Java EE(现为 Jakarta EE)规范的某些部分所做的努力,这些是那里的注入官方注解。 Spring 人员添加它们是为了促进 Spring 的采用和从 Java EE 进行系统迁移。
那么什么时候使用这个注解呢?如果您计划迁移到 Jakarta EE 或者从 Jakarta EE 迁移,那么使用它们来促进流程或保持系统一致是有意义的。否则,请选择 Spring“官方”版本。
【讨论】:
【参考方案3】:如果你只使用 spring,并且没有特殊行为,你可以使用任何注解:它们将被相同的处理。
如果您使用(或计划使用)其他依赖管理器(JavaEE、Guice、XWiki 内部容器,...)@Inject
和 @Named
由 JSR-330 定义,现在所有这些都支持容器。
另一方面,如果您打算使用所有 spring 特定的好东西,spring 特定的注释可能允许更精细的配置。
【讨论】:
以上是关于为啥以及何时在 Spring 中使用 @Inject 而不是 @Autowired? [复制]的主要内容,如果未能解决你的问题,请参考以下文章