项目结构:


源代码如下:
 package com.bean;
public interface Person {
public void Speak();
}
 package com.bean;
public class AmericanImpl implements Person {
private String name;
private int age; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} @Override
public void Speak() {
// TODO Auto-generated method stub
System.out.println("I'm American,My name is" + this.name + ",I'm" + this.age + " years old!");
}
}
  1.  package com.bean;
    public class ChineseImpl implements Person {
    private String name;
    private int age; public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public int getAge() {
    return age;
    }
    public void setAge(int age) {
    this.age = age;
    }
    @Override
    public void Speak() {
    // TODO Auto-generated method stub
    System.out.println("I'm Chinese,My name is" + this.name + ",I'm" + this.age + " years old!");
    }
    }
 
  1.  package com.spring;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import com.bean.Person;
    public class Test {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    Person person = (Person)context.getBean("chinese");
    person.Speak();
    person = (Person)context.getBean("american");
    person.Speak();
    }
    }

applicationContext.mxl 是在 src 的目录下,文件代码如下:
<?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-3.2.xsd ">
  <!-- 配置 Chinese实例,其实现类为com.bean.ChineseImpl -->
  <bean id="chinese" class="com.bean.ChineseImpl">
    <property name="name">
      <value>小明</value>
    </property>
    <property name="age">
      <value>10</value>
    </property>
  </bean>
  <bean id="american" class="com.bean.AmericanImpl">
    <property name="name">
      <value>Tom</value>
    </property>
    <property name="age">
      <value>15</value>
    </property>
  </bean>
</beans>

下面问题来了:
遇到问题1:
上面的代码是正确的,我之前由于是用 eclipse 配置的 spring-beans-3.2.xsd;
然后我创建 xml 时引用 xsd,elipse 生成的代码如下,缺少了上面黄色部分的代码
<?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 "> </beans>

其余代码正确,会报如下错误:
 Exception in thread "main" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 1 in XML document from class path resource [applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; systemId: http://www.springframework.org/schema/beans/; lineNumber: 1; columnNumber: 55; 在 publicId 和 systemId 之间需要有空格。
    ……
Caused by: org.xml.sax.SAXParseException; systemId: http://www.springframework.org/schema/beans/; lineNumber: 1; columnNumber: 55; 在 publicId 和 systemId 之间需要有空格。
    …… 

这些 jar 包都是必须的,缺一不可;

Spring开发一定会引入下面这两个 jar 包:

pring-core.jar:
这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类
spring-beans.jar:
这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。
如果应用只需基本的IoC/DI支持,引入spring-core.jar及spring- beans.jar文件就可以了
 

下面问题来了,缺了会报什么错呢?

ApplicationContext cannot be resolved to a type    

ClassPathXmlApplicationContext cannot be resolved to a type
这是因为缺少了
 
spring-context.jar:
这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类

加入这三个jar包之后,运行报如下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    ……
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    ……
这是因为缺少了
 
commons-logging-1.2.jar 
Apache Commons包中的一个,包含了日志功能,必须使用的jar包。

现在加入了四个 jar 包,运行报如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/expression/PropertyAccessor
    ……
Caused by: java.lang.ClassNotFoundException: org.springframework.expression.PropertyAccessor
    …… 
这是因为缺少了
 
spring-expression.jar:Spring表达式语言

好了,现在终于可以运行得到结果了:

 
 渣渣就得在 Bug 中挣扎!
 

附件列表

Spring-demo1(初学者的尝试,2015.03.19)的更多相关文章

  1. spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例

    下面开始项目的搭建 使用 Java EE - Eclipse 新建一 Dynamic Web Project Target Runtime 选 Apache Tomcat 7.0(不要选 Apache ...

  2. iOS 学习笔记 六 (2015.03.28)常见错误

    2015.03.28 1. property's synthesized getter follows Cocoa naming convention for returning 'owned' ob ...

  3. Contest2071 - 湖南多校对抗赛(2015.03.28)

    Contest2071 - 湖南多校对抗赛(2015.03.28) 本次比赛试题由湖南大学ACM校队原创 http://acm.csu.edu.cn/OnlineJudge/contest.php?c ...

  4. Spring 之定义切面尝试(基于 XML)

    有些场景下只能基于 XML 来定义切面. [Spring 之定义切面尝试] 1.XML 下定义切面(首先是要有一个对应的类...显然要比基于注解的麻烦) <?xml version=" ...

  5. Spring 之定义切面尝试(基于注解)

    [Spring 之定义切面尝试] 1.标记为深红色的依赖包是必须的 <dependency> <groupId>org.springframework</groupId& ...

  6. 致Spring Boot初学者

    1.引言 Spring Boot是近两年来火的一塌糊涂,来这里的每一位同学,之前应该大致上学习了web项目开发方面的知识,正在努力成长过程中.因为最近有不少人来向我“请教”,他们大都是一些刚入门的新手 ...

  7. spring boot docker 初尝试

    Docker服务中进程间通信通过/var/run/docker.sock实现,默认服务不提供监听端口,因此使用docker remote api 需要手动绑定端口. 在centos7.2下,可以进行这 ...

  8. Spring IOC 源码简单分析 03 - 循环引用

    ### 准备 ## 目标 了解 Spring 如何处理循环引用 ##测试代码 gordon.study.spring.ioc.IOC03_CircularReference.java   ioc03. ...

  9. 2015.04.19,外语,读书笔记-《Word Power Made Easy》 11 “如何辱骂敌人” SESSION 29

    1.the French drillmaster 法国国王路易十五手下的Jean Martinet将军,是Infantry(['infәntri] n. 步兵)的检察长,是一个非常严格的drillma ...

随机推荐

  1. CSS3 关于@font-face引用中文字体解决办法

    有两种方法,一种简单的,一种比较复杂,都可以实现(注:这里的方法只适合使用少量的中文字体,如果使用的字量过大,请使用其他方法解决) 第一种:简单的 1.下载需要的中文字体的.ttf格式,这个都不难找到 ...

  2. MVC-处理时间格式

    第一种方法:先设置一个时间显示的模板,然后在需要显示时间的地方调用这个模板就行了. 1.在Share文件夹下,创建一个文件夹DisplayTemplates 2.在DisplayTemplates文件 ...

  3. 网络请求 post 的接受请求头的代理方法

    接收响应头 content-Length content-Type - (void)connection:(NSURLConnection *)connection didReceiveRespons ...

  4. 简单的map转换成Bean的工具

    简单的map转换成Bean的工具 package com.sd.microMsg.util; import java.lang.reflect.Field; import java.lang.refl ...

  5. [JavaScript] 怎么使用JS禁止复制粘贴

    1. 将彻底屏蔽鼠标右键,其实是禁止快捷菜单,因为不光右键可以弹出这个菜单,键盘上空格键右边的windows键也可以激活这个快捷菜单 <table border oncontextmenu=re ...

  6. win7系统64位eclipse环境超详细暗黑1.4服务器搭建

    原地址:http://bbs.gameres.com/thread_223704.html 今天闲来没事,参照论坛中几篇成功案例,自己也搭建了下服务端,这里详细的记录下我的安装过程,方便大家快速搭建. ...

  7. unity 基础之PhysicsManager

    原地址:http://www.cnblogs.com/alongu3d/p/3644725.html @by  广州小龙 1.Gravity(重力) 物理系统都是根据实际情况进行模拟的,由于Y值是往下 ...

  8. POJ 1275 Cashier Employment(差分约束)

    http://poj.org/problem?id=1275 题意 : 一家24小时营业的超市,要雇出纳员,需要求出超市每天不同时段需要的出纳员数,午夜只需一小批,下午需要多些,希望雇最少的人,给出每 ...

  9. UVA 10269 Adventure of Super Mario

    看了这里 http://blog.csdn.net/acm_cxlove/article/details/8679230的分析之后自己又按照自己的模板写了一遍,算是对spfa又加深了一步认识(以前真是 ...

  10. RichEdit 各个版本介绍

    RichEdit是开发中经常使用到的控件,其版本自1.0起,历经好几年,好几次的更新,在此引用一篇介绍RichEdit版本的博文(http://blogs.msdn.com/b/murrays/arc ...