У меня есть фрагмент кода с инъекциями полей, которые я пытаюсь преобразовать, чтобы использовать инъекции конструкторов. Исходный код выглядит так:
@Autowired
private Environment env;
@Autowired
private YYYAdaptor yyyAdaptor;
@Autowired
private JAXBContext jaxbContext;
И вот как я это переписал:
private Environment env;
private YYYAdaptor yyyAdaptor;
private JAXBContext jaxbContext;
@Autowired
public YYYResource(Environment env, YYYAdaptor yyyAdaptor,
@Qualifier("YYYYReq") JAXBContext jaxbContext) {
this.env = env;
this.yyyAdaptor = yyyAdaptor;
this.jaxbContext = jaxbContext;
}
Выполнение этого дает мне критическую уязвимость при сканировании сонара, когда «этот элемент» ссылается на каждую из объявленных переменных:
Аннотируйте этот элемент с помощью "@Autowired", "@Resource", "@Inject" или "@Value" или удалите его
Как лучше всего избегать использования полевых инъекций, избегая при этом посадки сонара?