通过一个简单的示例来初步理解Spring框架

1、创建java工程,导入相应Spring包,放在lib文件夹中

2、接口  IHelloMessage

 package com.jike.spring.chapter01;

 public interface IHelloMessage {

     //接口中的一个抽象方法,用于向大家输出问候信息
public String sayHello(); }

3、java类 HelloChina.java,用于输出“中国话”

 package com.jike.spring.chapter01;

 public class HelloChina implements IHelloMessage {

     //继承和实现了IHelloMessage接口中的sayHello方法,
//向大家输出了Hello China的信息
@Override
public String sayHello() { return "Hello China!";
} }

4、java类 HelloWorld.java,用于输出“世界话”

 package com.jike.spring.chapter01;

 public class HelloWorld implements IHelloMessage{

     //继承和实现了IHelloMessage接口中的sayHello方法,
//向大家输出了Hello China的信息
@Override
public String sayHello() {
return "Hello World!";
} }

5、Person类

 package com.jike.spring.chapter01;

 public class Person {

     //将IHelloMessage作为一个属性,用于向大家输出问候信息
private IHelloMessage helloMessage; public IHelloMessage getHelloMessage() {
return helloMessage;
} public void setHelloMessage(IHelloMessage helloMessage) {
this.helloMessage = helloMessage;
} //用于调用IHelloMessage接口向用户输出问候信息,
//具体的问候信息,由Spring的配置文件来分配和决定
//1.当配置文件中分配给person的是HelloWorld的实体时,则输出“Hello World!”的信息;
//2.当配置文件中分配给person的是HelloChina的实体时,则输出“Hello China!”的信息;
public String sayHello() {
return this.helloMessage.sayHello();
}
}

6、Main主类

 package com.jike.spring.chapter01;

 import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource; public class Main { public static void main(String[] args) { //利用FileSystemResource读取配置文件
Resource r = new FileSystemResource("helloMessage.xml");
//利用XmlBeanFactory来加载配置文件,启动IOC容器
BeanFactory f = new XmlBeanFactory(r);
//从IOC容器中获取Person类的实例
Person person = (Person) f.getBean("person");
//person实例向大家输出问候信息
String s = person.sayHello();
//在系统控制台中打印问候信息,由于在这里配置文件中配置是HelloWorld的实例,
//所以,在这里打印的是字符串:HelloWorld
System.out.println("The Person is currently saying: "+s);
} }

7、配置helloMessage.xml

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloWorld" class="com.jike.spring.chapter01.HelloWorld"></bean>
<bean id="helloChina" class="com.jike.spring.chapter01.HelloChina"></bean>
<bean id="person" class="com.jike.spring.chapter01.Person">
<property name="helloMessage" ref="helloChina"/>
</bean>
</beans>

运行结果:

将配置文件改为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloWorld" class="com.jike.spring.chapter01.HelloWorld"></bean>
<bean id="helloChina" class="com.jike.spring.chapter01.HelloChina"></bean>
<bean id="person" class="com.jike.spring.chapter01.Person">
<property name="helloMessage" ref="helloWorld"/>
</bean>
</beans>

结果为:

Spring 小示例的更多相关文章

  1. ReactNative新手学习之路06滚动更新ListView数据的小示例

    本节带领大家学习使用ListView 做一个常用的滚动更新数据示例: 知识点: initialListSize={200} 第一次加载多少数据行 onEndReached={this.onEndRea ...

  2. 基于注解的Spring AOP示例

    基于注解的Spring AOP示例 目录 在XML配置文件中开启 @AspectJ 支持 声明切面及切入点 声明通知 测试 结语 在XML配置文件中开启 @AspectJ 支持 要使用Spring的A ...

  3. MVC客户端验证的小示例

    MVC客户端验证的小示例 配置客户端验证的可用性: <configuration> <appSettings>  <add key="ClientValidat ...

  4. 搭建Spring开发环境并编写第一个Spring小程序

    搭建Spring开发环境并编写第一个Spring小程序 2015-05-27      0个评论    来源:茕夜   收藏    我要投稿 一.前面,我写了一篇Spring框架的基础知识文章,里面没 ...

  5. 【.Net】Socket小示例

    引言 项目中用到了Socket,这里做个控制台小示例记录一下. Client 客户端的Receive用了异步方法,保持长连接,可以随时发送消息和响应服务端的消息,如下 static string Cl ...

  6. Struts2+Hibernate+Spring 整合示例

    转自:https://blog.csdn.net/tkd03072010/article/details/7468769 Struts2+Hibernate+Spring 整合示例 Spring整合S ...

  7. CentOS7 安装 RocketMQ 实践和小示例

    CentOS7 安装 RocketMQ 实践和小示例 1.通过 SSH 工具(比如 XShell)连接到 CentOS7 服务器上: 2.进入到 /usr/local 目录中: cd /usr/loc ...

  8. Highcharts入门小示例

    一.创建条形图 1.创建div容器 <div id="container" style="min-width:800px;height:400px"> ...

  9. spring小例子-springMVC+mybits整合的小例子

    这段时间没更博,找房去了...   吐槽一下,自如太坑了...承诺的三年不涨房租,结果今年一看北京房租都在涨也跟着涨了... 而且自如太贵了,租不起了.. 突然有点理解女生找对象要房了..   搬家太 ...

随机推荐

  1. 如何避免被C++默认拷贝构造函数忽悠?

    一.背景介绍           因为工作关系,需要用到C++编程.对于我来说,虽然一直从事的是linux平台下的嵌入式软件开发,但深入用到C++的特性的地方并不多.对于C++,用得最多的无非是指针. ...

  2. ARC代码和非ARC代码 混用

    选中工程->TARGETS->相应的target然后选中右侧的“Build Phases”,向下就找到“Compile Sources”了.然后在相应的文件后面添加:-fobjc-arc参 ...

  3. android避免decodeResource图片时占用太大的内存

    增加largeHeap="true"属性. android:largeHeap Whether your application's processes should be cre ...

  4. 2014ACMICPC亚洲区域赛牡丹江现场赛之旅

    下午就要坐卧铺赶回北京了.闲来无事.写个总结,给以后的自己看. 因为孔神要保研面试,所以仅仅有我们队里三个人上路. 我们是周五坐的十二点出发的卧铺,一路上不算无聊.恰巧邻床是北航的神犇.于是下午和北航 ...

  5. sql server代理中作业执行SSIS包失败

    RT,执行失败了,总是只提示一句“以xxxx用户身份执行失败”,很难找原因. 引用 http://bbs.csdn.net/topics/300059148 Sql2005如何用dtexec运行ssi ...

  6. sqllog 8.32 注册码

    注册信息: Name:kkkboy[CrSky] Registration code: Professional 17cb5c23-8653-418f-b81b-5582c7a5a2d7 Enterp ...

  7. 《javascript设计模式》--接口

    关于javascript设计模式书中的接口,记录如下 //TODO  增加了一个判断条件,可以只在生产环境中调用 接口var Interface = function(name,methods){ i ...

  8. 表单控件之select

    一.表单控件之表单 1.依次获取表单里的所有控件: for (i = 0; i < document.getElementById("formName").length; i ...

  9. css3中的提供的元素变化属性

    通过 CSS3 提供的2d元素转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸. css3中为我们 提供了: translate() rotate() scale() skew() matrix( ...

  10. Backbone的id

    id 在model.attributes中,需要用户自行定义,可不定义,获取方法:model.get('id') cid collection中每个model都有的属性,由backbone自动生成,获 ...