我们有一个不在Web容器中运行的应用程序,因此我尝试启动Spring。在“主要”功能中,我们有:
public static void main(String[] args) throws InterruptedException, IOException, AlreadyAliveException, InvalidTopologyException, AuthorizationException {
// starting up spring...
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath*:/applicationContext.xml");
DataSourceTransactionManager dstm = applicationContext.getBean("markiscool", DataSourceTransactionManager.class);
dstm.toString();
}
我的applicationContext.xml包含:
<bean id="markiscool" class="blah.entities.LocationEntity" />
该应用在启动时会记录下来:
[INFO] ClassPathXmlApplicationContext - 刷新 org.springframework.context.support.ClassPathXmlApplicationContext@295cd6e5: 开始升级 [Thu Dec 17 10:28:28 CST 2015];上下文层次结构的根 线程“main”中的异常 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有 名为'markiscool'的bean已定义
我已经尝试将垃圾放在xml文件中,但它没有失败,所以它一定不能找到文件。此外,该文件位于类路径上:
我也把文件放在我能想到的每个地方。它没有加载。救命啊!
答案 0 :(得分:2)
尝试使用FileSystemXmlApplicationContext
:
ApplicationContext applicationContext = new FileSystemXmlApplicationContext("/conf/applicationContext.xml");
而不是:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath*:/applicationContext.xml");
答案 1 :(得分:0)
试试这个:
右键单击 - &gt;属性 - &gt;部署程序集
输入一个条目:conf - &gt; /
试 新的ClassPathXmlApplicationContext(&#34; applicationContext.xml&#34;);
答案 2 :(得分:-1)
1)将applicationContext.xml放入config文件夹
2)告诉Maven将applicationContext.xml包含在它创建的jar中
3)使用函数ClassPathXmlApplicationContext来拉入文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath*:conf/applicationContext.xml");
注意:如果您尝试访问jar内的文件,FileSystemXmlApplicationContext将不起作用。出于这个原因,我建议使用ClassPathXmlApplicationContext,因为无论您是在eclipse中还是通过jar运行项目,它都可以运行