Применение одной аннотации к нескольким полям - PullRequest
5 голосов
/ 07 марта 2011

Можно ли применять одну и ту же аннотацию к нескольким полям (если есть много закрытых полей, и аннотировать их все выглядит неловко.

Так что у меня есть, как

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

и т. Д.

Я попробовал следующее, но это не сработает

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

Может быть, что-то необычное с пользовательскими аннотациями?

Ответы [ 3 ]

7 голосов
/ 07 марта 2011

Нет, но вы можете комментировать свой конструктор, а не свои поля. Это будет иметь дополнительное преимущество, чтобы сделать ваш класс более легко тестируемым, добавляя фиктивные зависимости при создании экземпляра для тестирования (что является основной причиной, по которой внедрение зависимостей полезно):

@Autowired
public MyClass(BlahService1 blahService1, BlahService2 blahService2, BlahService3 blahService3) {
    this.blahService1 = blahService1;
    this.blahService2 = blahService2;
    this.blahService3 = blahService3;
}
1 голос
/ 07 марта 2011

Нет ничего встроенного в язык, который допускает такого рода множественные аннотации.

Однако многие фреймворки предпочитают использовать своего рода "аннотацию по умолчанию" на уровне класса.

Например, для среды было бы возможно разрешить аннотацию @Autowired на уровне класса, чтобы подразумевать, что каждое поле должно быть автоматически соединено.Однако это полностью зависит от структуры, которую необходимо реализовать.

0 голосов
/ 07 марта 2011

Вы можете попробовать расширить интерфейс аннотаций AutoWired с установкой значений полей по умолчанию, установив для целевого типа его поля, а когда это не требуется, вы можете отключить его, передав соответствующие значения аннотациям только для этих полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...