В моем текущем проекте, когда этот метод называется:InvocationTargetException пытаюсь сделать новый экземпляр службы класса
public Collection<? extends Object> list_values() throws Exception {
String nome = classe().getSimpleName();
String nome_service = nome+"Service";
String local_service = "com.spring.model."+nome;
Class<?> clazz = Class.forName(local_service.toLowerCase()+"."+nome_service);
Object serv = clazz.newInstance();
Collection<? extends Object> list = (Collection<? extends Object>) serv.getClass().getMethod("lista").invoke(serv);
return list;
}
приложение вызывает InvocationTargetException вызванного этой ошибкой:
Caused by: java.lang.NullPointerException
at com.spring.config.generic.service.basicService.lista(basicService.java:51)
где basicService
является суперкласс для класса, хранящегося в переменной clazz
.
Любой может сказать мне, что я делаю неправильно здесь? Какой правильный способ создать новый экземпляр этого класса?
пс .: линия 51 в basicService помещается внутри этого метода:
@Transactional
public List<?> lista() {
return dao.findAll();
}
и член dao
определяется следующим образом:
@Autowired
protected Dao<E> dao;
Хорошо, когда это метод list_values называется? И кто олицетворяет боб, который держит DAO, это весной? Кроме того, вы реализовали/расширили интерфейс/класс жизненного цикла Spring bean? – SMA
@almasshaikh Этот метод вызывается внутри класса для пользовательского тега. Выберите в методе 'doStartTag (...)'. –