Всем привет!
Изучаю Spring и в документации сказано, что все исключения класса @Repository будут автоматически транслироваться в DataAccessException.
Repository для User:
package org.example.dao;
public interface UserDAO {
void addUser(User user);
}
@Repository
public class UserDAOImpl implements UserDAO {
public void addUser(User user) {
throw new HibernateException("unchecked exception");
}
}
Service для User:
package org.example.services;
public interface UserService {
void addUser(User user);
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDAO userDAO;
@Override
public void addUser(User user) {
try {
userDAO.addUser(user);
} catch (Exception e) {
e.printStackTrace();
}
}
}
В web.xml:
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
На деле я получаю HibernateException. Не понимаю, как работает трансляция исключений. Почему HibernateException не транслировался в исключение типа DataAccessException?
Кто подскажет, что я понял не так? :)
Оказалось, что я упустил главную деталь: указать в конфигах реализацию трянслятора исключений org.springframework.dao.support.PersistenceExceptionTranslator.
Summary:
org.springframework.dao.support.PersistenceExceptionTranslator@RepositoryВсем спасибо!
Продвижение своими сайтами как стратегия роста и независимости