5 Stimmen

Autowiring HibernateInterceptor als Empfehlung

Ich versuche, HibernateInterceptor als Advice zu verwenden, und ich versuche, es automatisch zu verbinden.

Der Code lautet wie folgt,

    @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;

    }

}

Im Folgenden ist meine XML-Zuordnung dargestellt,

<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/>

Wenn ich den hibernateInterceptop überprüfe, erhalte ich nur NULL :(... Nicht sicher, warum es nicht in der Lage ist, den Hibernate-Interceptor automatisch zu verbinden

Irgendwelche Ideen? Vielen Dank für Ihre Zeit.

Zum Wohl, J

0voto

Chochos Punkte 5120

Haben Sie mehrere Abfangjäger?

Wenn Sie @Autowired mit @Qualifier verwenden, würde ich vorschlagen, dass Sie stattdessen @Resource verwenden. Das ist mehr... Standard.

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

Ich hatte einmal Probleme mit @Autowired und @Qualifier, aber nie mit @Resource (@Resource ist JSR250, nicht Spring, aber Spring unterstützt es).

Wenn Sie nur einen hibernateInterceptor haben, können Sie einfach @Resource mit dem Namensqualifizierer verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X