私はSpringに出くわしましたがPersistenceExceptionTranslationPostProcessor
、これは で注釈が付けられたDAOでスローされる例外を抽象化するため、完璧に思え@Repository
ます。
現在、バックエンドとしてデータベースの代わりに JMS (ActiveMQ) を使用するアプリケーションがあります。s を Spring のPersistenceExceptionTranslationPostProcessor
に変換するようなものを使用したいと思います。JMSException
DataAccessException
車輪を再発明する前に、そのようなものをウェブで検索しましたが、見つかりませんでした。間違った検索キーを使用している可能性があります。もう一度試してみると、このようなものが存在することを知っている人はいますか?それとも、このホイールを発明する必要がありますか?
アップデート:
私は自分自身を作成する必要があるようPersistenceExceptionTranslator
です。私は次のことをしました:
PersistenceExceptionTranslator
私の抽象的なJMS DAOに実装されています:
public abstract class AbstractJmsDao implements PersistenceExceptionTranslator
{
public void throwException()
{
try
{
throw new JMSException("test");
}
catch (JMSException ex)
{
throw JmsUtils.convertJmsAccessException(ex);
}
}
@Override
public DataAccessException translateExceptionIfPossible(RuntimeException ex)
{
// translate exceptions here.
}
}
PersistenceExceptionTranslationPostProcessor
私のXML構成に追加されました:
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
私のDAO実装に次の注釈を付けました@Repository
:
@Repository
public class CustomerJmsDao extends AbstractJmsDao implements CustomerDao
{
public void test()
{
throwException();
}
}
ただし、 aRuntimeException
がスローされると、translateExceptionIfPossible()
がヒットすることはありません (ブレークポイントでチェック)。ここで明らかに何かが欠けていますが、何がわかりません。