初识Spring及打印机案例

Spring框架

概述:Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。

Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。

一:IOC(Inversion of Control)

即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。

在传统的Java项目中,是通过一个类new另一个类的对象,将两个类进行关联,这样的话是程序主动去创建依赖对象,这样的话会导致类与类之间的高耦合,难于测式。

而IOC是把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,由这个容器来管理对象的生命周期和对象之间的关联关系,这样的话不但实现了对象之间的关联关系,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

二:DI(Dependency Injection)

即“依赖注入”:IOC和DI在本质上来说是同一种东西,只不过IOC是一种设计理论,而DI则是一种实现。

组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。

IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的

三、Spring使用初始案例

  1、先在pom.xml文件中导入Spring依赖

    

  2、创建项目实体类(一个类都是一个Bean)

    StudentBean实体类

      

  3、创建resources文件夹并创建applicationContext.xml文件

    

    applicationContext.xml文件内容如下

    

  4、Test测试类

    

  5、运行结果如下

    

四、Spring域属性案例

  1、在上个案例的基础上添加一个实体类Techer类

    

  2、在StudentBean类中添加Techer对象

    

  3、在applicationContext.xml中配置

    

  4、Test测试类

    

  5、运行结果如下

    

五、打印机案例

  1、创建Ink墨盒接口并定义获取墨盒颜色的方法

package com.spring.Ink;

/**
 * Ink墨盒接口
 */
public interface Ink {
    //获取墨盒颜色
    public String getInk();
}

  2、分别创建彩色墨盒(ColorInk)和黑白墨盒(GrayInk)

package com.spring.Ink;

import com.spring.Ink.Ink;

public class ColorInk implements Ink {
    @Override
    public String getInk() {
        return "彩色";
    }
}
package com.spring.Ink;

import com.spring.Ink.Ink;

public class GrayInk implements Ink {
    @Override
    public String getInk() {
        return "黑白色";
    }
}

   3、创建Paper纸张接口并定义获取纸张大小的方法

package com.spring.paper;

public interface Paper {
    //获取纸张大小
    public String getPaper();
}

  4、分别创建A4(A4Paper)和B5(B5Paper)类

package com.spring.paper;

public class A4Paper implements Paper {
    @Override
    public String getPaper() {
        return "A4";
    }
}
package com.spring.paper;

public class B5Paper implements Paper {
    @Override
    public String getPaper() {
        return "B5";
    }
}

  5、创建打印机类(Printer)

package com.spring.printer;

import com.spring.Ink.Ink;
import com.spring.paper.Paper;

/**
 * 打印机类
 */
public class Printer {
    //纸张对象
    private Paper paper;

    //墨盒对象
    private Ink ink;

    //打印的方法
    public void print(){
        System.out.println("你正在使用"+paper.getPaper()+"纸张和"+ink.getInk()+"墨盒打印信息!");
    }

    public Paper getPaper() {
        return paper;
    }

    public void setPaper(Paper paper) {
        this.paper = paper;
    }

    public Ink getInk() {
        return ink;
    }

    public void setInk(Ink ink) {
        this.ink = ink;
    }
}

  6、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的注入都是实现类-->
    <bean id="colorink" class="com.spring.Ink.ColorInk"></bean>
    <bean id="grayInk" class="com.spring.Ink.GrayInk"></bean>

    <!--注入纸张  Bean的注入都是实现类-->
    <bean id="a4Paper" class="com.spring.paper.A4Paper"></bean>
    <bean id="b5Paper" class="com.spring.paper.B5Paper"></bean>

    <!--打印机类  将纸张和墨盒组合起来-->
    <bean id="printer" class="com.spring.printer.Printer">
        <property name="ink" ref="colorink"></property>
        <property name="paper" ref="a4Paper"></property>
    </bean>
</beans>

  7、Test测试类

package com.spring.test;

import com.spring.printer.Printer;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class PrinterText {
    public static void main(String[] args) {
        ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
        Printer printer =(Printer) ctx.getBean("printer");

        printer.print();
    }
}

  8、运行结果如下

    

原文地址:https://www.cnblogs.com/tinghao/p/11732218.html