当前位置: 首页 > news >正文

SSM-Spring-02:Spring的DI初步加俩个实例

 

 

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

 

 

DI:依赖注入

 

第一个DEMO:域属性注入

  java类:(Car类和Stu类,学生有一辆小汽车)

package cn.dawn.day02di;

/**
 * Created by Dawn on 2018/3/3.
 */
//小汽车类
public class Car {
    private String type;
    private String color;

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}








package cn.dawn.day02di;

/**
 * Created by Dawn on 2018/3/3.
 */
//学生类
public class Stu {
    private String name;
    private Integer age;
    private Car car;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Car getCar() {
        return car;
    }

    public void setCar(Car car) {
        this.car = car;
    }
}

  配置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="car" class="cn.dawn.day02di.Car">
        <property name="type" value="奔驰"></property>
        <property name="color" value="红色"></property>
    </bean>
    <!--学生-->
    <!--这儿的小汽车不能用value,用ref引用上面的那个汽车car-->
    <bean id="stu" class="cn.dawn.day02di.Stu">
        <property name="name" value="孟六"></property>
        <property name="age" value="20"></property>
        <property name="car" ref="car"></property>
    </bean>

</beans>

  测试类

package cn.dawn.day02;

import cn.dawn.day02di.Stu;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created by Dawn on 2018/3/3.
 */
public class test20180303 {
    @Test
    /*域属性*/
    public void t01(){
        ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext-day02.xml");
        Stu stu = (Stu) context.getBean("stu");
        System.out.println(stu.getName()+""+stu.getCar().getType());
    }
}

 

 

 

 

 

第二个Demo:打印机案例

  先把架构放上来

      

  把里面每个类中的代码(code) 放上来

package cn.dawn.day03printer.ink;

/**
 * Created by Dawn on 2018/3/3.
 */
/*墨盒*/
public interface Ink {
    public String getInkColor();
}


package cn.dawn.day03printer.ink;

/**
 * Created by Dawn on 2018/3/3.
 */
/*彩色墨盒*/
public class ColorInk implements Ink {
    public String getInkColor() {
        return "彩色墨盒";
    }
}



package cn.dawn.day03printer.ink;

/**
 * Created by Dawn on 2018/3/3.
 */
/*黑白墨盒*/
public class BlackInk implements Ink {
    public String getInkColor() {
        return "黑白墨盒";
    }
}



package cn.dawn.day03printer.paper;

/**
 * Created by Dawn on 2018/3/3.
 */
/*纸张*/
public interface Paper {
    public String getPagerSize();
}



package cn.dawn.day03printer.paper;

/**
 * Created by Dawn on 2018/3/3.
 */
/*B5纸张*/
public class B5Paper implements Paper{

    public String getPagerSize() {
        return "B5纸";
    }
}



package cn.dawn.day03printer.paper;

/**
 * Created by Dawn on 2018/3/3.
 */
/*A4纸张*/
public class A4Paper implements Paper {
    public String getPagerSize() {
        return "A4纸";
    }
}



package cn.dawn.day03printer.printer;

import cn.dawn.day03printer.ink.Ink;
import cn.dawn.day03printer.paper.Paper;

/**
 * Created by Dawn on 2018/3/3.
 */
/*打印机*/
public class Printer {
    /*墨盒*/
    private Ink ink;
    /*纸张*/
    private Paper paper;
    /*打印方法*/
    public void print(){
        System.out.println("我们的喷墨打印机,用"+ink.getInkColor()+""+paper.getPagerSize()+"打印出了------》我爱Spring");
    }


    public Ink getInk() {
        return ink;
    }

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

    public Paper getPaper() {
        return paper;
    }

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

 

 

 

  配置文件中:

 

<?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="ink" class="cn.dawn.day03printer.ink.ColorInk"></bean>
    <!--纸张-->
    <bean id="paper" class="cn.dawn.day03printer.paper.A4Paper"></bean>
    <!--打印机-->
    <bean id="printer" class="cn.dawn.day03printer.printer.Printer">
        <property name="ink" ref="ink"></property>
        <property name="paper" ref="paper"></property>
     </bean>
</beans>

 

 

 

  单测方法

 

package cn.dawn.day03;

import cn.dawn.day02di.Stu;
import cn.dawn.day03printer.printer.Printer;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created by Dawn on 2018/3/3.
 */
public class test20180303 {
    @Test
    /*打印机案例*/
    public void t01(){
        ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext-day03.xml");
        Printer printer = (Printer) context.getBean("printer");
        printer.print();
    }
}

 

转载于:https://www.cnblogs.com/DawnCHENXI/p/8502756.html

相关文章:

  • DOM的那些事
  • 【mysql】count(*),count(1)与count(column)区别
  • 北塔软件:BI+AI+DI,做IT运维数据掘金的使能者
  • 秋季学期学习总结
  • 如何解决微信端直接跳WAP端
  • iOS CAReplicatorLayer 简单动画
  • Java Activiti 工作流引擎 springmvc SSM 流程审批 后台框架源码
  • D-Uni 获斯道资本500万美元投资-「D-Uni颉一科技」
  • 阿里云宣布华北5地域十月开服,将部署国内首个全系Skylake+25G网络
  • 前嗅ForeSpider教程:链接抽取
  • 谷歌支付Purchases验证中的purchaseType
  • .NET分布式缓存Memcached从入门到实战
  • 转行程序员深漂的这三年 #2
  • ES6 学习笔记(一)let,const和解构赋值
  • 「镁客·请讲」商询科技李劼:用MR拯救“垃圾大数据”,重构知识图谱是制胜关键...
  • [译]CSS 居中(Center)方法大合集
  • create-react-app做的留言板
  • Debian下无root权限使用Python访问Oracle
  • Druid 在有赞的实践
  • Javascripit类型转换比较那点事儿,双等号(==)
  • markdown编辑器简评
  • php面试题 汇集2
  • Spark RDD学习: aggregate函数
  • storm drpc实例
  • 测试如何在敏捷团队中工作?
  • 观察者模式实现非直接耦合
  • 缓存与缓冲
  • 码农张的Bug人生 - 初来乍到
  • 使用Gradle第一次构建Java程序
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 终端用户监控:真实用户监控还是模拟监控?
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​【已解决】npm install​卡主不动的情况
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • #FPGA(基础知识)
  • #QT(智能家居界面-界面切换)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (c语言)strcpy函数用法
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (一)SpringBoot3---尚硅谷总结
  • (转)ABI是什么
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET下ASPX编程的几个小问题
  • @Autowired和@Resource装配
  • @RequestBody的使用
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [22]. 括号生成
  • [Angular] 笔记 18:Angular Router
  • [C#]使用PaddleInference图片旋转四种角度检测
  • [CERC2017]Cumulative Code
  • [datastore@cyberfear.com].Elbie、[thekeyishere@cock.li].Elbie勒索病毒数据怎么处理|数据解密恢复