Весной, когда я вводил список бобов, я хочу вводить конкретные реализации интерфейса, когда используется в разных местах. Это возможно? Какой будет самый чистый способ настроить это? Например, у меня есть следующие валидаторы: < /p>
public interface Validator {
Optional validate(MultipartFile file);
}
public class Validator1 implements Validator {
public Optional validate(MultipartFile file) {
// do stuff
}
}
public class Validator2 implements Validator {
public Optional validate(MultipartFile file) {
// do stuff
}
}
public class Validator3 implements Validator {
public Optional validate(MultipartFile file) {
// do stuff
}
}
< /code>
, а затем у меня есть служба проверки, которая выглядит аналогично этим: < /p>
public class ValidationService {
@Autowired
private List validators;
public List validate(MultipartFile file) {
List errors = new ArrayList();
validators.forEach(v -> {
Optional error = v.validate(file);
if (error.isPresent()) {
errors.add(error.get());
}
});
return errors;
}
}
< /code>
, а затем у меня есть несколько сервисов, которые используют Validationservice, например: < /p>
public class Service1 {
@Autowired
private ValidationService validationService;
public void doStuff(MultipartFile file) {
...
validationService.validate(file);
...
}
}
public class Service2 {
@Autowired
private ValidationService validationService;
public void doStuff(MultipartFile file) {
...
validationService.validate(file);
...
}
}
< /code>
Когда проверяют звонки Service1, я хочу, чтобы Validator1 и Validator2 были введены в Validatoratorservice.
Когда вызовы Service2 Validate, я хочу только Validator2 и Validator3. Validatorservice. < /p>
Надеюсь, я объяснил это достаточно четко. Заранее спасибо за любую предложенную помощь.
Подробнее здесь: https://stackoverflow.com/questions/715 ... s-included
Весна, вводя список бобов только с конкретными бобами, включенными ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение