博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring(一)Spring中的IOC和DI
阅读量:7204 次
发布时间:2019-06-29

本文共 4321 字,大约阅读时间需要 14 分钟。

首先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();    }}

 

转载于:https://www.cnblogs.com/my-123/p/8504604.html

你可能感兴趣的文章
hdu 1728 逃离迷宫 *
查看>>
将Word文档转化为HTML格式的文档
查看>>
WCF
查看>>
IDE安装Lombok插件提高开发效率
查看>>
转://使用showplan.sql分析sql Performance
查看>>
第七课:增量分析
查看>>
【总结整理】JQuery基础学习---动画
查看>>
A. Round House_数学问题
查看>>
LeetCode OJ:Remove Nth Node From End of List(倒序移除List中的元素)
查看>>
0920编译原理词法分析
查看>>
浅谈数位DP的dfs写法
查看>>
Linux下的bash对拍
查看>>
C++ STL标准入门
查看>>
移动端页面制作2
查看>>
UE4中的常量材质实例和动态材质实例
查看>>
php中的字符串和正则表达式
查看>>
SharePoint获取UserProfile的信息
查看>>
[题解]第十一届北航程序设计竞赛预赛——I.神奇宝贝大师
查看>>
Python--关于连接符+
查看>>
office 所有后缀对应的 content-type
查看>>