2010-10-12 10 views
5

Ich versuche, HibernateInterceptor als einen Ratschlag zu verwenden, und ich versuche, es autowire.Autowiring HibernateInterceptor als Empfehlung

Der Code wird 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; 

    } 

} 

Das Folgende ist meine XML-Mapping,

<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 die hibernateInterceptop überprüfen, alles, was ich bekommen ist NULL: (... Nicht sicher, warum sein nicht in der Lage, das Hibernate-Interceptor

Irgendwelche Ideen autowire? Vielen Dank für Ihre Zeit.

Cheers, J

+0

Was passiert, wenn Sie manuell eine andere Eigenschaft für den 'HibernateInterceptor' in der Spring-Konfiguration festlegen? –

Antwort

0

Haben Sie mehrere Interzeptoren?

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

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

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

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