使用Spring注释自动应用Hibernate Interceptor?

在我的服务类中,我需要可用的hibernate会话。 我目前在beans.xml中执行此操作:

     com.app.dao.UserDao    hibernateInterceptor     ...      

(手工复制,可能是一些错别字..)

我正在使用注释而不是XML,我想知道是否有一种方法可以使用它们配置代理,因为我上面包括hibernate拦截器 ? 如果没有 – 有没有办法可以减少XML的数量(大约有7个DAO使它变得非常混乱)

好的,我们走吧。 你说

我正在转向使用XML注释

启用以下方面

 package br.com.ar.aop; @Aspect public class HibernateInterceptorAdvice { @Autowired private HibernateInterceptor hibernateInterceptor; /** * I suppose your DAO's live in com.app.dao package */ @Around("execution(* com.app.dao.*(..))") public Object interceptCall(ProceedingJoinPoint joinPoint) throws Throwable { ProxyFactory proxyFactory = new ProxyFactory(joinPoint.getTarget()); proxyFactory.addAdvice(hibernateInterceptor); Class [] classArray = new Class[joinPoint.getArgs().length]; for (int i = 0; i < classArray.length; i++) classArray[i] = joinPoint.getArgs()[i].getClass(); return proxyFactory .getProxy() .getClass() .getDeclaredMethod(joinPoint.getSignature().getName(), classArray) .invoke(proxyFactory.getProxy(), joinPoint.getArgs()); } } 

但请记住,如果您的DAO实现了某些接口 (例如,UserDAOImpl实现了UserDAO),它就可以正常工作。 在这种情况下,Spring AOP使用JDK动态代理。 如果您没有任何界面,则可以依赖IDE来使用Extract界面重构代码

按如下方式声明你的xml(请注意我使用的是Spring 2.5 xsd架构)

                

不要忘记 Spring库之外放入类路径

 /lib/asm /lib/aopalliance /lib/aspectj 

看看@Autowired注释。