• 初识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、运行结果如下

        

  • 相关阅读:
    嵌入式Qt4.7.1安装详解
    oracle数据库、客户端安装以及ps/sql连接和导入表实例
    大战C100K之-Linux内核调优篇--转载
    读<阿里亿级日活网关通道架构演进>有感
    hadoop跑第一个实例过程
    Using the command line to manage files on HDFS--转载
    hadoop命令帮助
    从netty-example分析Netty组件续
    windows下spark开发环境配置
    源码分析netty服务器创建过程vs java nio服务器创建
  • 原文地址:https://www.cnblogs.com/tinghao/p/11732218.html
Copyright © 2020-2023  润新知