gpt4 book ai didi

Spring 无法在侧面注入(inject)

转载 作者:行者123 更新时间:2023-12-04 08:46:12 24 4
gpt4 key购买 nike

我正在尝试注入(inject)一个方面内的对象。但它总是出现空值。此拦截器用于使用 aspectj 注入(inject)域对象,因此除以下定义外不由 spring 管理

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

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

我的单元测试是这样的。当 asa.execute() 被调用时,它会被 LoggingInterceptor 拦截,但 LoggingInterceptor.eventLogManager 始终为空。但是下面的 testInjection() 工作正常。
 @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();
}
}

我的 applicationContext-service.xml 具有以下内容
<bean id="eventLogManager"
class="service.impl.EventLogDBManagerImpl">
<property name="eventLoggingDao" ref="eventLoggingDao" />
</bean>

我在 META-INF 中的 aop.xml 看起来像这样
<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>

最佳答案

那没有用。

我用谷歌搜索了一下,在 Spring 论坛板上找到了解决方案。链接在这里

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

关于 Spring 无法在侧面注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4541957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com