Автопроводка HibernateInterceptor в качестве совета - PullRequest
5 голосов
/ 12 октября 2010

Я пытаюсь использовать HibernateInterceptor в качестве совета, и я пытаюсь автоматически подключить его.

Код выглядит следующим образом:

    @Aspect
public class InterceptorAdvice{


    private HibernateInterceptor hibernateInterceptor;

    @Autowired
    public void setHibernateInterceptor(@Qualifier("hibernateInterceptor") HibernateInterceptor hibernateInterceptor) {
        this.hibernateInterceptor = hibernateInterceptor;
    }

    @Around("execution(* *..*.dao..*.*(..))")
    public Object interceptCall(ProceedingJoinPoint joinPoint) throws Exception {
        Object obj = null;
        try{
            .......
        }catch(Exception e){
            e.printStackTrace();
        }
        return obj;

    }

}

Ниже приведено мое сопоставление XML,

<bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor" autowire="byName">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
<!--To enable AspectJ AOP-->
<aop:aspectj-autoproxy/>
<!--Your advice-->
<bean class="com.web.aop.InterceptorAdvice"/>
<!--Looks for any annotated Spring bean in com.app.dao package-->
<context:component-scan base-package="com.web.dao"/>
<!--Enables @Autowired annotation-->
<context:annotation-config/>

Когда я проверяю hibernateInterceptop, все, что я получаю, это NULL: (... Не уверен, почему он не может автоматически подключить перехватчик hibernate

Есть идеи? Спасибо за ваше время.

Приветствия, J

1 Ответ

0 голосов
/ 22 октября 2010

У вас есть несколько перехватчиков?

Если вы используете @Autowired с @Qualifier, я бы посоветовал вместо этого использовать @Resource.Это больше ... стандартно.

@Resource(name="hibernateInterceptor")
public void setHibernateInterceptor(HibernateInterceptor value) {
  hibernateInterceptor = value;
}

У меня были проблемы с @Autowired и @Qualifier один раз, но никогда с @Resource (@Resource это JSR250, не Spring, но Spring его поддерживает).

Если у вас есть только один hibernateInterceptor, вы можете просто использовать @Resource с квалификатором имени.

...