1

在此处输入图像描述

我正在学习弹簧依赖注入。我有两种类型的代码。一个有效,一个无效......但是,它们都为制作教程的人工作。

注释代码给了我下面显示的错误。

    @SuppressWarnings("deprecation")
public static void main(String[] args) {

    //ApplicationContext factory = new ClassPathXmlApplicationContext("Beans.xml");

    //The code below works
    BeanFactory factory = new XmlBeanFactory(new FileSystemResource("Beans.xml"));
    HelloWorld obj = (HelloWorld) factory.getBean("helloworld");

    obj.getMessage();
}

豆类.xml

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


    <bean id="helloworld" class="com.vulab.hellow.HelloWorld">
        <property name="message" value="Hello World" />
    </bean>
</beans>

使用ApplicationContext时出现错误消息

线程“主”org.springframework.beans.factory.BeanDefinitionStoreException 中的异常:IOException 从类路径资源 [Beans.xml] 解析 XML 文档;嵌套异常是 java.io.FileNotFoundException:类路径资源 [Beans.xml] 无法打开,因为它不存在

4

2 回答 2

2

为了XmlBeanFactory工作,Beans.xml必须与调用类位于同一目录中。

一个简单的替代方法是确保它Beans.xml位于您的类路径中。您可以将它们复制到src\resources然后使用:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) applicationContext.getBean("helloworld");

ClassPathXmlApplicationContext因为不需要指定绝对文件位置,所以更方便。

注意:自 Spring 3.1 起XmlBeanFactory弃用,这意味着如果您从 3.0 更改,则应使用此类替代方案。

于 2013-01-09T16:34:06.297 回答
1

对于ClassPathXmlApplicationContext,应用程序上下文 XML 文件将需要在您的 ClassPath 中可用。

如果您使用标准 Maven 目录布局,您需要将Beans.xml文件放在src/main/resources.

如果您从 IDE 运行(从屏幕截图中看起来您正在使用 Eclipse,尽管您没有明确说明您的 IDE),您将需要进入 Properties->Java Build Path 并添加src/main/resources到构建路径。

祝你好运,希望这会有帮助!

于 2013-01-09T16:38:57.830 回答