// Мой завод классSpring @Autowired аннотированный значение объекта является нулевым
@Component
public class UserRewardAccountValidatorFactory {
@Autowired
private VirginAmericaValidator virginAmericaValidator;
private static class SingletonHolder {
static UserRewardAccountValidatorFactory instance = new UserRewardAccountValidatorFactory();
}
public static UserRewardAccountValidatorFactory getInstance() {
return SingletonHolder.instance;
}
private UserRewardAccountValidatorFactory() {}
public PartnerValidator getPartnerValidator(Partner partner){
return virginAmericaValidator;
}
}
класс
@Service
public class VirginAmericaValidator implements PartnerValidator {
@Override
public void validate(String code) throws InvalidCodeException{
//do some processing if processing fails throw exception
if (code.equals("bad".toString())){
throw new InvalidCodeException();
}
}
}
// Использование // Мой Validator
:
PartnerValidator pv = UserRewardAccountValidatorFactory.getInstance().getPartnerValidator(partner);
if (pv != null){
try {
pv.validate(userRewardAccount);
} catch (InvalidCodeException e){
return buildResponse(ResponseStatus.INVALID_USER_REWARD_ACCOUNT, e.getMessage());
}
}
уровень Мой пакет сканирования находится на гораздо более высоком уровне. Что происходит, мой девственникАмерикаВалитатор всегда пуст. Почему @Autowired аннотация не работает.
или с), используя @Configurable и AspectJ, то весна впрыснуть даже в тех случаях, которые создаются с помощью 'new' (Я упоминаю об этом только для завершения процесса и потому бороться с этим слух, что Spring не может вводить в классы, которые генерируются 'new' - потому что это неправильно) – Ralph
Если я создаю VirginAmericaValidator, простираюсь от другого абстрактного класса и реализую там интерфейс, это сделает для меня пружинный автоузел? – riship89
Нет, это также не сработает, так как проблема все еще в том, как создается 'UserRewardAccountValidatorFactory', а не в Validator. Вы должны иметь возможность работать с одним из двух вариантов, о которых я говорил. Подход, который упоминал Ральф, также хорош, но для его работы потребуется полное переплетение AspectJ. –