gpt4 book ai didi

spring - 加载类路径中 jar 内的 spring 应用程序上下文文件

转载 作者:IT老高 更新时间:2023-10-28 13:46:03 24 4
gpt4 key购买 nike

我正在尝试在我的 java 独立代码中使用 ClassPathXmlApplicationContext 来加载我的类路径中的 jar 文件中的 applicationContext.xml。

ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:**/applicationContext*.xml");

applicationContext.xml条目如下,

 <bean id="myAdder" class="com.foo.bar.MyAdder">
<property name="floatAdder" ref="floatAdder"/>
</bean>

而且,当我尝试以这种方式加载 bean 时,我得到了 NoSuchBeanException。不能用这种方式加载一个bean吗?

jar 文件作为 maven 依赖项添加到我的类路径中。当我在 Eclipse 中看到此项目的 Java 构建路径时,我看到此 jar 链接为 M2_REPO/.../..

我假设我可以将 bean 加载到 jar 文件中,因为 jar 以这种方式位于类路径中。我错过了什么吗?

谢谢,阿比

最佳答案

这应该可行,我刚刚创建了 2 个项目并进行了检查。

项目 A(使用 STS 创建的标准 Maven 项目)在 src/main/resources 中有 applicationContext.xml

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.D</groupId>
<artifactId>A</artifactId>
<version>0.0.1-SNAPSHOT</version>

<properties>
<spring.version>3.0.5.RELEASE</spring.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</project>

applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="myAdder" class="com.foo.bar.MyAdder">
<property name="foo" value="bar" />
</bean>

</beans>

项目 B:

pom.xml:与A相同,除了A被添加为依赖项:

<dependency>
<groupId>org.D</groupId>
<artifactId>A</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

项目B中的Start.java:

public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"classpath*:**/applicationContext*.xml");

MyAdder myAdder = (MyAdder) context.getBean("myAdder");
System.out.println(myAdder.getFoo());
}

先mvn install A,然后在项目B中运行Start。

关于spring - 加载类路径中 jar 内的 spring 应用程序上下文文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6303242/

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