我试图仅使用XML语法配置spring,并且遇到了将本机资源异常转换为DataAccessException
的问题。根据文档,我总是需要将@Repository
放在存储库bean上并声明PersistenceExceptionTranslationPostProcessor
bean。我认为这应该是使用AOP定义某种过滤器的方法,它将执行异常翻译但在文档中找不到这样的东西。我们的想法是引入约定,例如“为Dao应用原生异常翻译而结束的一切”。有什么想法吗?
答案 0 :(得分:0)
类似于@Repository annotaion spring xml config看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
...
<bean id="translationInterceptor" class="org.springframework.dao.support.PersistenceExceptionTranslationInterceptor" />
<aop:config>
<aop:advisor advice-ref="translationInterceptor" pointcut="within(org.example.spring.dao..*Dao)" />
</aop:config>
...
</beans>
Pointcut“(org.example.spring.dao .. * Dao)”将拦截器应用于包org.example.spring.dao中的类中的方法,其子包以“Dao”后缀结尾