zoukankan      html  css  js  c++  java
  • Spring(一)Spring中的IOC和DI

    首先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包后其他两个自动会有

    <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.1.6.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.1.6.RELEASE</version>
            </dependency>

    (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的文件

    文件中的内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean id="service" class="demo01.HappyService">
            <property name="info" value="第一个Spring项目"></property>
            <property name="age" value="10"></property>
        </bean>
    </beans>

    (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文件中进行配置

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    
        <!--现在Spring中定义一个Ink-->
        <bean id="ink" class="demo03.ink.ColorInk"></bean>
        <!--在Spring中定义一个Paper-->
        <bean id="paper" class="demo03.paper.A4Paper"></bean>
        <!--在Spring中定义一个Printer-->
        <bean id="printer" class="demo03.printer.Printer">
            <property name="ink" ref="ink"></property>
            <property name="paper" ref="paper"></property>
        </bean>
    </beans>

    最后编写测试类,进行单侧

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

  • 相关阅读:
    jQuery学习教程(一):入门
    jQuery学习教程(八):事件
    jQuery学习教程(五):选择器综合实例
    jQuery学习教程(六):属性操作与CSS操作
    jQuery学习教程(四):使用jQuery操作DOM
    jQuery学习教程(七):val()与节点操作
    jQuery学习教程(二):选择器1
    const的使用
    ASP.NET 页面间传值的方法
    .net中接口与基类
  • 原文地址:https://www.cnblogs.com/my-123/p/8504604.html
Copyright © 2011-2022 走看看