gpt4 book ai didi

java - 新对象中的 Spring 工具和自动注入(inject)

转载 作者:行者123 更新时间:2023-11-30 09:34:34 25 4
gpt4 key购买 nike

我有 spring 3.1 应用程序。我有 spring-instrument java 代理,我有可配置的类:

@Configurable
public class WeavingClass {

@Resource
@Getter
private ApplicationContext ac;

public WeavingClass()
{

}

}

并进行单元测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={WebBackendContextConfig.class})
@Slf4j
public class TestWeavingInjection extends TestCase {

@Test
public void isInjectedTest()
{
WeavingClass wc = new WeavingClass();
assertNotNull(wc.getAc());
}
}

并且有:

@Configuration
@PropertySource(value={"classpath:META-INF/conf/liteicms-backend.properties"})
@ComponentScan(value={"ru.icb.liteicms.backend.service", "ru.icb.liteicms.domain", "ru.icb.liteicms.backend.domain.contentpage.wrappers"})
@EnableSpringConfigured
@EnableLoadTimeWeaving
@EnableAspectJAutoProxy
public class WebBackendContextConfig {

}

我用 -javaagent:org.springframework.instrument-3.1.1.RELEASE.jar 运行我的测试我的测试没有错误。

但是如果我添加这个:

private HashMap<Class<?>, Class<?>> builderMap = new HashMap<Class<?>, Class<?>>()
{
private static final long serialVersionUID = 1L;
{
put(String.class, WeavingClass.class);
}
};

我的测试失败了。

最佳答案

new 上注入(inject)-创建的对象(而不是托管 beans)只能通过编译或加载时编织实现,而不能通过 Spring 默认使用的运行时代理实现。

您将需要配置一个 AspectJ 编织器,<context:load-time-weaver> ,或使用命令行选项启动 JVM 以启用 InstrumentationSavingAgent .

Details from the Spring documentation

关于java - 新对象中的 Spring 工具和自动注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11755152/

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