加载类路径中 jar 内的 spring 应用程序上下文文件
我试图在我的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 以这种方式位于类路径中。我错过了什么吗?
谢谢,阿比
I am trying to use ClassPathXmlApplicationContext in my java standalone code to load applicationContext.xml that is inside a jar file which is in my class path.
ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:**/applicationContext*.xml");
applicationContext.xml entry as follows,
<bean id="myAdder" class="com.foo.bar.MyAdder">
<property name="floatAdder" ref="floatAdder"/>
</bean>
And, when I try to load a bean that way I am getting NoSuchBeanException. Can't a bean by loaded in this way?
The jar file is added to my classpath as a maven dependency. When I see the Java Build Path in Eclipse for this project, I see this jar linked as M2_REPO/.../..
I was assuming I can load the bean inside the jar file as the jar is in classpath this way. Am I missing something?
Thanks,Abi
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这应该可行,我刚刚创建了 2 个项目并进行了检查。
项目 A(使用 STS 创建的标准 Maven 项目)在 src/main/resources 中有
applicationContext.xml
。pom.xml:
applicationContext.xml:
项目 B:
pom.xml: 与 A 相同,只是 A 添加为依赖项:
项目 B 中的 Start.java:
先 mvn install A,然后运行项目 B 中的 Start。
This should work, I just created the 2 projects and checked.
Project A (standard Maven project created with STS) has
applicationContext.xml
in src/main/resources.pom.xml:
applicationContext.xml:
Project B:
pom.xml: same as A, except A is added as dependency:
Start.java in project B:
mvn install A first, then run Start in project B.
您真的需要该位置的
classpath*:
前缀吗? (这个*
合法吗?)我本来期望的更像是:Do you really need the
classpath*:
prefix on that location? (Is that*
legal?) I would have expected something more like: