Spring @Autowire多个对象

时间:2012-03-10 15:37:37

标签: spring

我喜欢代码在视觉上易于阅读(主观,我知道)。 Spring中是否有一种方法可以采用第一种形式的代码

@Autowired
private O1 o1
@Autowired
private O2 o2
@Autowired
private O3 o3

做这样的事情:

@Autowired
private O1 o1
private O2 o2
private O3 o3
@Endautowire

我会发现代码不那么杂乱。我知道我很琐碎和挑剔,但是......

5 个答案:

答案 0 :(得分:5)

您可以使用构造函数为所有对象注入一个注释:

private O1 o1;
private O2 o2;
private O3 o3;

@Autowired
public ClassA(O1 o1, O2 o2, O3 o3) {
    this.o1 = o1;
    this.o2 = o2;
    this.o3 = o3;
}

答案 1 :(得分:2)

有时人们会使用声明变量,

int i1, i2, i3;

这不再被视为最佳做法,分别宣布每一项都增加了可读性

提出你的问题,正如mrembisz告诉它必须发生的那样,需要在源文件中发生。另外, java编译器应该更改以处理这种情况

为了提高可读性,你的解决方案只会增加代码混乱并降低可读性,假设我注入了10个bean,每次我需要查看代码的上方和下方以了解它是否是是否自动连接。

所以,我怀疑是否值得花时间去做。

答案 2 :(得分:0)

不是您想要的注释。

您可以创建一个取这三个的超级类型,并在此处添加该类型。如果您多次发现自己处于这种情况,或者它真的反映了您的应用程序中的概念,那么我们就会这样做。

答案 3 :(得分:0)

只有使用java源的预处理器才有可能。但在我看来完全不值得。

答案 4 :(得分:0)

我和原版海报有同样的想法,但在阅读完答案之后,我完全同意一致认为最好单独注释成员。我赞同最初的问题,因为它是一个很好的问题,尽管其基础假设不好,因为它带来了更好的答案。