@Autowired只提到一个对象吗?

时间:2014-12-02 12:50:19

标签: spring spring-mvc

在Spring中@Autowired注释只涉及一个对象吗?

@Autowired
A object_a;

@Autowired
B object_b;

@Autowired
C object_c;

@Autowired
A object_a;
B object_b;
C object_c;

它们是一样的吗?谢谢

3 个答案:

答案 0 :(得分:3)

在你的问题的上下文中,@ Autowired只引用一个对象。你以后的陈述只会自动装配object_a;

  

标记构造函数,字段,setter方法或配置方法   由Spring的依赖注入工具自动启动。

以您解释的方式使用,它是一个字段级注释,仅适用于一个字段

请注意,如果在spring中对构造函数使用@Autowire,则可以注入多个依赖项,作为示例

@Autowired
public YourClass(A object_a, B object_b, C object_c) {
  this.object_a = object_a;
  this.object_b = object_b;
  this.object_c = object_c;
}

答案 1 :(得分:2)

@Autowire(与任何annotation一样)特定于下一个语句。因此,您的示例并不相同。

Autowired interface可以应用于构造函数,字段或方法:

@Target(value={CONSTRUCTOR,FIELD,METHOD})

关于您在评论中提供的示例:

@Autowired A a, B b, C c;

如果abc是字段,则不会编译,因为每个语句只有一个字段声明。

如果不是,则由于他们不属于授权类型而无法工作。

答案 2 :(得分:0)

不,他们不一样。根据{{​​3}},FieldDeclaration以分号结束。你可以写

@AutoWired A a, b, c; 

并且自动装配适用于所有三个,但这可能没有多大意义,因为你只能在每个字段声明的类型...

干杯,