首先Spring和MyBaits一样是一个框架,Java不死的原因是因为Java有Spring这个非常强大的技术框架的支持,而且他是一个轻量级的Java开发框架
那么是谁创建了Spring呢?
Spring之父——Rod JohnSon
Spring的官网是:Spring.io(有需要的可以去上面看看)
Spring又有那些特征呢?(在这里简单的介绍了一下)
1.什么是IOC?
IOC的全称是Inverse Of Control ,是控制反转的意思,他是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,也是轻量级的Spring框架的核心
那么如何理解这句话呢?
第一种理解:将组建对象的控制权从代码本身转移到外部容器
第二种理解:将创建对象实力的控制权从代码控制剥离到IOC容器控制
2.Spring 的第一个案例
编写一个Spring的基本步骤:
(1)首先要引入jar包
引入下面这两个jar包后其他两个自动会有
org.springframework spring-beans 4.1.6.RELEASE org.springframework spring-context 4.1.6.RELEASE
(2)创建一个类,我在这叫HappyService
package demo01;import java.util.StringTokenizer;/** * Created by mycom on 2018/3/3. */public class HappyService { private String info; private Integer age; public HappyService(){ System.out.println("======HappyService"); } public void work(){ System.out.println("我是"+info); } public String getInfo() { return info; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public void setInfo(String info) { this.info = info; }}
(3)在resource下配置一个ApplicationContext.xml的文件
文件中的内容:
(4)编写测试类
import demo01.HappyService;import demo03.printer.Printer;import demo03.printer.Printer;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * Created by mycom on 2018/3/3. */public class Test20180303 { @Test public void t1(){ ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); HappyService service =(HappyService) context.getBean("service"); service.work(); }}
测试的结果如下
这是IOC的简介,下面再说一下DI
3.什么是DI
DI的全称是 Dependency Injection 是依赖注入,主要是给对象属性输入属性值
那么他和IOC的关系是什么呢?
他们是Spring核心思想不同方面的描述,站在不同的维度对同一个概念或者事物的解释
下面用一个例子来解释(打印机案例)
一台打印机要先打印出东西首先要有 墨盒 纸张 还有一个打印机
那么首先我们要先编写一个墨盒接口,在墨盒的包下
package demo03.ink;/** * Created by mycom on 2018/3/3. */public interface Ink { public String getInk();}
写完接口,要有实现类继承他,在写两个类,彩色墨盒和黑白墨盒
package demo03.ink;/** * Created by mycom on 2018/3/3. */public class BlackInk implements Ink { public String getInk() { return "黑白墨盒"; }}
package demo03.ink;/** * Created by mycom on 2018/3/3. */public class ColorInk implements Ink { public String getInk() { return "彩色墨盒"; }}
纸张接口
package demo03.paper;/** * Created by mycom on 2018/3/3. */public interface Paper { public String getPaper();}
他的实现类
package demo03.paper;/** * Created by mycom on 2018/3/3. */public class B5Paper implements Paper { public String getPaper() { return "B5"; }}
package demo03.paper;/** * Created by mycom on 2018/3/3. */public class A4Paper implements Paper { public String getPaper() { return "A4"; }}
下面是打印机类,不是接口了
package demo03.printer;import demo03.ink.Ink;import demo03.paper.Paper;/** * Created by mycom on 2018/3/3. */public class Printer { private Ink ink; private Paper paper; public Ink getInk() { return ink; } public void setInk(Ink ink) { this.ink = ink; } public void printer(){ System.out.println("我在一张"+ink.getInk()+"颜色的"+paper.getPaper()+"纸上写东西了"); } public Paper getPaper() { return paper; } public void setPaper(Paper paper) { this.paper = paper; }}
之后要在xml文件中进行配置
最后编写测试类,进行单侧
import demo01.HappyService;import demo03.printer.Printer;import demo03.printer.Printer;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * Created by mycom on 2018/3/3. */public class Test20180303 { @Test public void t1(){ ApplicationContext context=new ClassPathXmlApplicationContext("applicationContextPrinter.xml"); Printer printer =(Printer) context.getBean("printer"); printer.printer(); }}