gpt4 book ai didi

spring - 无法加载 Spring ApplicationContext

转载 作者:行者123 更新时间:2023-12-01 10:51:44 27 4
gpt4 key购买 nike

我正在为一个有点复杂的 spring 应用程序编写单元测试。我想加载 spring 上下文以使用定义的 bean。我的 context.xml 位于:

src/main/resources/context.xml

在 maven 构建之后,context.xml 出现在:
target/classes/context.xml

在 pom.xml 中,我有:(正如 this post 所建议的)
<resources>
<resource>
<filtering>true</filtering>
<directory>src/test/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
<excludes>
<exclude>**/*local.properties</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>

我尝试通过两种方式完成这项工作:
1, Use ApplicationContext
AppliactionContext springContext = new ClassPathXmlApplicationContext("/context.xml");
MyObject myObject = springContext.getBean(myObject.class);

2, Use Annotations
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/context.xml"})
public class myTest{
@Autowired
MyObject myObject;
...
}

但两种方式都不适合我。错误信息:
java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:157)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:288)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:290)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
... more

重点: context.xml 实际上是从另一个项目复制的。这些项目作为一个应用程序一起运行,但是当作为 Junit 运行时,我不知道如何从不同的项目加载上下文,所以我只是复制并粘贴了文件。这可能是个问题

更多信息
故障跟踪:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'validator' defined in class path resource [context.xml]: BeanPostProcessor
before instantiation of bean failed; nested exception is
java.lang.NoClassDefFoundError: org.aspectj.lang.annotation.Aspect

Caused by: java.lang.NoClassDefFoundError: org.aspectj.lang.annotation.Aspect

Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.annotation.Aspect

所以看起来我必须先导入一些spring aop包?

请给出建议。非常欣赏。

最佳答案

使用 Spring Test 注解作为 junit 测试运行时,需要使用 classpath在这样的地方

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/context.xml")

我不使用任何 resources pom.xml 中的定义。你可以删除它并像这样尝试。

关于spring - 无法加载 Spring ApplicationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18495914/

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