Estoy tratando de inyectar un objeto que está dentro de un aspecto. Pero siempre resulta nulo. este interceptor se utiliza para inyectar objetos de dominio utilizando aspectj por lo tanto, no se maneja por el muelle, excepto la siguiente definiciónprimavera no se puede inyectar en el aspecto
<context:load-time-weaver />
<context:component-scan base-package="framework.interceptor" />
@Aspect
public class LoggingInterceptor {
@Autowired
EventLogManager eventLogManager;
.....
}
mi prueba de unidad es algo como esto. cuando se llama a asa.execute() es interceptado por LoggingInterceptor, pero LoggingInterceptor.eventLogManager siempre es nulo. Pero testInjection() a continuación funciona bien.
@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();
}
}
mi applicationContext-service.xml tiene la siguiente
<bean id="eventLogManager"
class="service.impl.EventLogDBManagerImpl">
<property name="eventLoggingDao" ref="eventLoggingDao" />
</bean>
mi aop.xml en META-INF tiene este aspecto
<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>