(Java Spring WebApp)
У меня есть:
public class PersonValidator implements Validator {
private PersonDAO d;
@Autowired
public void setD(PersonDAO d) {
this.d = d;
}
public void validate(Object target, Errors errors) {
\\ some logic
d.emailAlreadyExists("testMail@test.test");
}}
Мне показалось, что я действительно понимаю бины и автоматическую разводку - похоже нет.Код "d.email .." выдает мне исключение нулевого указателя, и это действительно происходит с любым методом PersonDAO d.Как я понимаю, проблема в том, что ничего не вводится.
Однако, если я пытаюсь внедрить его на моем контроллере, который использует этот валидатор, все работает:
@Controller
@RequestMapping("/person")
public class PersonController
{
private PersonDAO d;
@Autowired
public void setD(PersonDAO d) {
this.d = d;
}
// some method with RequestMapping declaration {
Boolean b = d.emailAlreadyExists(person.getMail());
logger.info( b.toString());
// } end some method
Хотя этот код выше не то, чтоЯ хочу.Я хочу внедрить свой DAO в PersonValidator, так как некоторые методы DAO должны проверять db.Чтобы это работало следующим образом:
\\ these lines are in Controller under method
PersonValidator validator = new PersonValidator(); // my d.emailAlreadyExists("testMail@test.test"); is inside
validator.validate(person, bindingResult);
PersonDAO объявлен в xml, а PersonValidator - нет.Разве я не могу внедрить bean-компонент Spring DAO в простой Java-объект, такой как PersonValidator, который не удален в xml?
(между прочим, сканирование компонента в порядке - на всякий случай)