2019/4/14 距离上一篇日记的纪录已经又过去了一周的时间…老样子,还是在常规学习之余 抽出部分时间用来自学Spring
通过之前对Spring的了解 这周 打算通过一个简单的小事例来复习一下之前我所自学的内容
小事例
首先 这次要做的这个小程序的主要目的是用来 向用户发出一个简单的问好的功能 (当然也就是 入门标配的HelloWorld)但是与之不同的是的。这次我们要利用 Spring Ioc 的特性 来制作这个程序 使它在不同的需求下实现不同的问好方式。
Step1 配置环境
这里我用到的是Eclipse Java EE 的开发环境,当然了如果使用IDEA的话也是可以的。不过IDEA这个东西吧…emm并不免费,所以就会产生一些大家都知道的一些问题啦。所以我这边还是果断选择了Eclipse的开发平台。
好嘞,现在安装完毕了
看到那个熟悉的图标了吧 对了 点击它 (~~如果你还不闲烦的话还可以将它添加到快速启动 ~~ 91警告)
Step2 建立工程
前几步过程较为简单就不过多叙述直接上图
- 新建项目
- 引入Spring framework 的jar包
新建lib文件夹
新建完毕之后将我们之前准备好的Spring的相关jar文件导入到lib文件夹下面(相关文件可以移步到Spring官网下载)
导入到Bulid Path让工程可以识别并使用它 点击Add JARs 导入即可。
需要建立java类文件之间的关系
首先,这个小程序要实现的最终效果呢 是实现一个人在不同的处境进行不同的问好方式。当他在中国的时候,他会说 您好!
当他客居他乡 深处国外时候,相应的他会用英语来问候。
所以 接下来简述一下我们需要建立的java文件以及相互关系。
- 首先 我们需要建立一个IHelloMessage.java文件 用来作为接口文件 在这个接口文件当中 需要建立一个方法(say hello)来输出问候信息
- Next 我们需要创建两个实现类 HelloWorld.java和HelloChina.java 这两个文件是用来实现IHelloMessage中的sayHello方法
其中HelloWorld输出英语字符串,而HelloChina则将输出中文字符串。 - 其次 我们还需要建立一个Person.java 文件 用来调用IHelloMessagae接口 用来输出问候信息。 为了引用此方法我们还需要在Person类中生成一个IHelloMessage的属性
- 当然最重要的我们还要建立一个Main的入口 用来读取 xml 配置文件和调用person类输出问候信息。
- 最终 决定这个人到底是输出中文还是英文是归功于Xml的配置文件的 当xml文件当中 配置为中国 输出中文信息 配置为国外 输出英文信息。
Step3 项目的实现
好啦,前面巴拉巴拉了这么多终于到了 实现这一步了。
- 建立interface类型IHelloMessage.java 并创建sayHello方法
package com.sky.spring.study01;
public interface IHelloMessage {
public String sayHello();
}
- 建立HelloWord类 返回HelloWord信息(注意建立Class时需要在add处选择IHelloMessage接口)
package com.sky.spring.study01;
public class HelloWorld implements IHelloMessage {
@Override
public String sayHello() {
// TODO Auto-generated method stub
return "Hello World!";
}
}
- 同理 我们继续创建HelloChina类
package com.sky.spring.study01;
public class HelloChina implements IHelloMessage {
@Override
public String sayHello() {
// TODO Auto-generated method stub
return "大家好!";
}
}
- 创建Person类文件 将IHelloMessage作为其属性 为其创建Get Set方法( helloMessage右键 -> source -> Generate Getter and Setter )
package com.sky.spring.study01;
public class Person {
private IHelloMessage helloMessage;
public IHelloMessage getHelloMessage() {
return helloMessage;
}
public void setHelloMessage(IHelloMessage helloMessage) {
this.helloMessage = helloMessage;
}
public String sayHello() {
return this.helloMessage.sayHello();
}
}
- 创建Main主方法
package com.sky.spring.study01;
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) {
// TODO Auto-generated method stub
Resource r = new FileSystemResource("helloMessage.xml");
BeanFactory f = new XmlBeanFactory(r);
Person person =(Person)f.getBean("person");
String s = person.sayHello();
System.out.print("The person is currently saying:" +s);
}
}
- 创建XML配置问价
在Src下新建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.sky.spring.study01.HelloWorld">
</bean>
<bean id = "helloChina" class= "com.sky.spring.study01.HelloChina">
</bean>
<bean id = "person" class = "com.sky.spring.study01.Person">
<property name="helloMessage" ref="helloChina">
</property>
</bean>
</beans>