zoukankan      html  css  js  c++  java
  • spring一

    首先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();
        }
    
    
    }
  • 相关阅读:
    【转载】RocketMQ与Kafka对比(18项差异)
    canal —— 阿里巴巴mysql数据库binlog的增量订阅&消费组件
    CodingTMD’s Reading List
    [LeetCode] Evaluate Reverse Polish Notation, Solution
    [LeetCode] Clone Graph, Solution
    [LeetCode] Sort List, Solution
    [LeetCode] Max Points on a Line, Solution
    [LeetCode] LRU Cache, Solution
    [LeetCode] Binary Tree Preorder Traversal, Solution
    [LeetCode] Reorder List, Solution
  • 原文地址:https://www.cnblogs.com/a157/p/8512296.html
Copyright © 2011-2022 走看看