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

简介:   ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------     DI:依赖注入   第一个DEMO:域属性注入   java类:(Car类和Stu类,学生有一辆小汽车) package cn.

 

 

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

 

 

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

 

目录
相关文章
|
8月前
|
Java 容器 Spring
什么是Spring IOC 和DI ?
IOC : 控制翻转 , 它把传统上由程序代码直接操控的对象的调用权交给容 器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转 移,从程序代码本身转移到了外部容器。 DI : 依赖注入,在我们创建对象的过程中,把对象依赖的属性注入到我们的类中。
|
8月前
|
前端开发 Java 数据库连接
Spring MVC 扩展和SSM框架整合
通过以上步骤,我们可以将Spring MVC扩展并整合到SSM框架中。这个过程包括配置Spring MVC和Spring的核心配置文件,创建控制器、服务层和MyBatis的Mapper接口及映射文件。在实际开发中,可以根据具体业务需求进行进一步的扩展和优化,以构建更加灵活和高效的企业级应用程序。
197 5
|
8月前
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot中使用拦截器——拦截器使用实例
本文主要讲解了Spring Boot中拦截器的使用实例,包括判断用户是否登录和取消特定拦截操作两大场景。通过token验证实现登录状态检查,未登录则拦截请求;定义自定义注解@UnInterception实现灵活取消拦截功能。最后总结了拦截器的创建、配置及对静态资源的影响,并提供两种配置方式供选择,帮助读者掌握拦截器的实际应用。
280 0
|
11月前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
353 12
|
存储 开发框架 Java
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
文章详细介绍了Spring、IOC、DI的概念和关系,解释了控制反转(IOC)和依赖注入(DI)的原理,并提供了IOC的代码示例,阐述了Spring框架作为IOC容器的应用。
830 1
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
|
存储 Java 程序员
SpringIOC和DI的代码实现,Spring如何存取对象?@Controller、@Service、@Repository、@Component、@Configuration、@Bean DI详解
本文详细讲解了Spring框架中IOC容器如何存储和取出Bean对象,包括五大类注解(@Controller、@Service、@Repository、@Component、@Configuration)和方法注解@Bean的用法,以及DI(依赖注入)的三种注入方式:属性注入、构造方法注入和Setter注入,并分析了它们的优缺点。
204 0
SpringIOC和DI的代码实现,Spring如何存取对象?@Controller、@Service、@Repository、@Component、@Configuration、@Bean DI详解
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
Java 数据库连接 Maven
Spring基础1——Spring(配置开发版),IOC和DI
spring介绍、入门案例、控制反转IOC、IOC容器、Bean、依赖注入DI
Spring基础1——Spring(配置开发版),IOC和DI
|
消息中间件 Java Kafka
Spring boot 自定义kafkaTemplate的bean实例进行生产消息和发送消息
Spring boot 自定义kafkaTemplate的bean实例进行生产消息和发送消息
687 5