Как работает exception translation в Spring?

454
23 января 2017, 18:12

Всем привет!

Изучаю 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?

Кто подскажет, что я понял не так? :)

Answer 1

Оказалось, что я упустил главную деталь: указать в конфигах реализацию трянслятора исключений org.springframework.dao.support.PersistenceExceptionTranslator.

Summary:

  1. Сконфигурировать транслятор исключений org.springframework.dao.support.PersistenceExceptionTranslator
  2. Пометить класс @Repository
  3. Не ловить исключения в самом DAO.

Всем спасибо!

READ ALSO
Как сверстать такой элемент?

Как сверстать такой элемент?

Нужен вот такой треугольник, чтобы тянулся адаптивноПодскажите, как лучше его сверстать? Я пытался бордерами через before и after, но линии соприкосновения...

362
Как объединить 2 фильтра css

Как объединить 2 фильтра css

Как объединить эти 2 фильтра в 1? (Или как сделать 1 более насыщенным? - С 1 фильтром результат не устраивает)

482
Меню в виде таблицы [требует правки]

Меню в виде таблицы [требует правки]

Нужно большое меню в виде таблицыВо время событий over и click нужна анимация как текущей ячейки, так и соседних

349