本篇主要涉及Spring环境的搭建,以及对IOC和DI进行描述
1.jar包下载
初学者可能进入Spring官网找不到jar包的下载地址,上图就是找到jar包的路径
2.面向接口编程
面向接口编程并不是比面向编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于一部分,是面向对象编程体系的思想精髓之一。面向接口编程就是在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向上层提供服务(即不是实例化在上层中),而是定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不是依赖具体实现类。
使用接口的好处:
(1)系统灵活性,当下层需要改变,只要接口及接口功能不变,则上层不用做任何修改。甚至不用改动上层代码就能将下层整个换掉。接口概念可参考移动硬盘与计算机的接口
(2)不同部件或不同层次的开发人员可以并行开工。
(3)接口代码量少 ,清楚知道每个方法对应的功能。
接口是一组规则的结合,它规定实现本接口的类或接口必须拥有的一组规则,体现自然界“如果你是。。。。则必须能。。”,接口是在一定粒度视图上同类事物的抽象表示。
3.代码编写
我是根据极客学院的教学视频进行参考的,代码是我自己编写的。
需求:定义一个helloMessage接口,定义了一个方法sayHello方法,该接口有两个实现类helloChina和helloWorld,分别返回字符串,‘大家好!’和‘hello world!’,在Person类中调用接口的sayHello方法。工程截图如下:
在Bean的配置文件中向Person中注入helloMessage,并声明该接口所实例化的类
依赖注入就是将我们所需的对象注入到目标对象中,这边就是将helloMessage的实例对象注入到Person类中
运行main程序:
控制台输出:The person is current Saying:大家好!
使用依赖注入的代码:
package helloSpring;
public class Person {
private helloMessage hellomessage;
public helloMessage getHellomessage() {
return hellomessage;
}
public void setHellomessage(helloMessage hellomessage) {
this.hellomessage = hellomessage;
}
public String sayHello(){
return this.hellomessage.sayHello();
}
}
控制反转就是上面代码的Person类对象的sayHello方法交由另一个对象helloMessage对象的实例来实现
当不使用依赖注入功能,在Person类中我们需要用new 生成一个对象,例如我们可能需要需要:
helloMessage hellomessage=new helloChina();
或者
helloMessage hellomessage=new helloWorld();
这样一来,耗费我们的经历心力,而且增加耦合度。
4.总结
控制反转与依赖注入是紧密联系,可以这么说,依赖注入是实现控制反转的方法或者是手段。