Конструктор предназначен для создания объектов. Вы говорите: «отправьте сюда аргументы через конструктор» - но это означает, что вы должны создавать новый объект типа BinCountryCheckerFilterImpl
для каждого запроса, и этот класс определяется не так.
В вашем случае BinCountryCheckFilterImpl
- это компонент с одноэлементной областью (по умолчанию), что означает, что в контексте приложения существует только один экземпляр этого класса.
Поэтому вместо использования параметра в конструкторе просто передайте Terminals
объект (который создается по запросу) в методе проверки:
@Service
public class BinCountryCheckFilterImpl {
@Autowired
private RiskFilterService riskFilterService;
public void validateBinCountryCheckFilter(Terminals terminal) {
}
}
Если вам действительно нужно определить BinCountryCheckFilterImpl
как прототип, вы должны знать, что прототипы не могут быть внедрены в синглтоныс помощью простой автопроводки.
Для этого существует множество методов, ответы на которые вы можете найти здесь . Я не описываю их в ответе, потому что я чувствую, что это выходит за рамки вопроса, и вам действительно следует воспользоваться решением, которое я предоставил выше.