5

该文档包含以下段落。

“与@Autowired 一样,可以在类级别、字段级别、方法级别和构造函数参数级别使用@Inject。”

如果我没记错的话,我知道@Inject 注解可以用于字段级别、方法级别和构造函数参数级别,不能用于类级别。

注入注解源代码:

@Target({ METHOD, CONSTRUCTOR, FIELD })
@Retention(RUNTIME)
@Documented
public @interface Inject {}

这是真的吗?

4

1 回答 1

2

对我来说,它们几乎是等价的,@Inject是自 Java EE 6 以来引入的CDI@Autowired的一部分和 Spring 框架的一部分。

@Autowired界面看起来与@Inject 具有相同的目标:

@Target(value={CONSTRUCTOR,FIELD,METHOD})
@Retention(value=RUNTIME)
@Documented
public @interface Autowired

我认为这是Spring 文档第 5.11.1 章中的一个小错误,因为我从未@Autowired在类级别上看到任何注释。

此链接显示了每种方法的差异和限制。

于 2013-11-22T10:47:08.003 回答