2010-12-27 20 views
8

Bir yönün içinde bulunan bir nesneyi enjekte etmeye çalışıyorum. Ama her zaman null döner. Bu önlemeyayı açılamıyor

<context:load-time-weaver /> 
<context:component-scan base-package="framework.interceptor" /> 

@Aspect 
public class LoggingInterceptor { 
    @Autowired 
    EventLogManager eventLogManager; 
..... 
} 

benim birim test böyle bir şeydir aşağıdaki tanım dışında yay tarafından AspectJ dolayısıyla yönetilmeyen kullanarak etki alanı nesneleri enjekte etmek kullanıldı. asa.execute() çağrıldığında LoggingInterceptor tarafından yakalanır, ancak LoggingInterceptor.eventLogManager her zaman boştur. Ama testInjection() aşağıda çalışıyor.

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {  "classpath:applicationContext-dao.xml", 
            "classpath:applicationContext-service.xml", 
            "classpath:applicationContext-resources.xml", 
            "classpath:LoggingTest-context.xml"}) 
public class LoggingInterceptorTest { 

    @Autowired 
EventLogManager eventLogManager; 

@Test 
public void testInjection(){ 
    Assert.assertNotNull(eventLogManager); 
} 

@Test 
public void testAccountSaveActionAdvice(){ 
    AccountSaveAction asa = new AccountSaveAction(); 
    asa.execute(); 
} 
} 

benim ApplicationContext-service.xml işe yaramadı bu

<aspectj> 
<weaver> 
    <!-- only weave classes in this package --> 
    <include within="action..*" /> 
</weaver> 
<aspects> 
    <!-- use only this aspect for weaving --> 
    <aspect name="interceptor.LoggingInterceptor" /> 
</aspects> 
</aspectj> 

cevap

3

benziyor META-INF aşağıdaki

<bean id="eventLogManager" 
    class="service.impl.EventLogDBManagerImpl"> 
    <property name="eventLoggingDao" ref="eventLoggingDao" /> 
</bean> 

benim aop.xml sahiptir.

Ben biraz googled ve bahar forum panosunda çözüm bulundu. İşte bağlantı

http://forum.springsource.org/showthread.php?t=79674