Весна, вводя список бобов только с конкретными бобами, включеннымиJAVA

Программисты JAVA общаются здесь
Anonymous
 Весна, вводя список бобов только с конкретными бобами, включенными

Сообщение Anonymous »

Весной, когда я вводил список бобов, я хочу вводить конкретные реализации интерфейса, когда используется в разных местах. Это возможно? Какой будет самый чистый способ настроить это? Например, у меня есть следующие валидаторы: < /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»