Java 在多个字段上应用相同的注释

Java 在多个字段上应用相同的注释,java,spring,annotations,Java,Spring,Annotations,是否可以在多个字段上应用相同的注释(如果有许多私有字段,并且看起来很难对它们全部进行注释) 所以我所拥有的是 @Autowired private BlahService1 blahService1; @Autowired private BlahService2 blahService2; @Autowired private BlahService3 blahService3; 等等 我尝试了以下方法,但无效 @Autowired{ private BlahService1

是否可以在多个字段上应用相同的注释(如果有许多私有字段,并且看起来很难对它们全部进行注释)

所以我所拥有的是

@Autowired private BlahService1 blahService1;
@Autowired private BlahService2 blahService2;
@Autowired private BlahService3 blahService3;
等等

我尝试了以下方法,但无效

@Autowired{     
   private BlahService1 blahService1;       
   private BalhService2 blahService2;   
}

自定义注释可能有什么特别之处?

没有,但是您可以对构造函数而不是字段进行注释。这将有额外的好处,可以通过在构建要测试的实例时注入模拟依赖项,使类更易于测试(这是依赖项注入有用的主要原因):


语言中没有内置的东西允许这种多注释

然而,许多框架选择在类级别上允许某种“默认注释”


例如,框架可能允许类级别的
@Autowired
注释暗示每个字段都应该自动连接。但是,这完全取决于框架来实现。

您可以尝试通过设置字段的默认值来扩展Autowired注释接口,设置其目标类型对于字段,只要不需要,您就可以通过将适当的值仅传递给这些字段上的注释来将其关闭。

如果您有太多字段,以至于难以对它们全部进行注释,那么您可能有太多字段。这对相同类型的字段有效,但在这里可能没有意义。
@Autowired
public MyClass(BlahService1 blahService1, BlahService2 blahService2, BlahService3 blahService3) {
    this.blahService1 = blahService1;
    this.blahService2 = blahService2;
    this.blahService3 = blahService3;
}