【Java EE】Spring IOC&DI

Spring IOC & DI

一、Spring是什么?

Spring是一个开发的框架,包含了很多的依赖,比如Spring MVC, Spring Boot等,这些让我们开发变得容易,可以说,Spring是一个包含很多工具方法的容器。

二、IOC(控制反转)

2.1 通俗理解

Inversio of Control ,也就是说,Spring是一个 “控制反转” 的容器。

控制反转就是让一个事物的控制权交由其他人。

2.2 造汽车的例子理解IOC

造汽车的流程:

在这里插入图片描述

代码:
汽车类:

package com.example.springioc.v1;

public class Car {
   
    // 汽车依赖于框架
    private Frame frame;

    public Car() {
   
        frame = new Frame();
        System.out.println("汽车安装框架中...");
    }
}

框架类:

package com.example.springioc.v1;

public class Frame {
   
    // 框架依赖于底盘
    private Bottom bottom;
    public Frame() {
   
        bottom = new Bottom();
        System.out.println("框架安装底盘中...");
    }
}

底盘类:

package com.example.springioc.v1;

import jdk.jfr.Frequency;

public class Bottom {
   
    // 底盘依赖于轮胎
    private Tire tire;
    // 有了尺寸的需求,需要进行传参
    public Bottom(int size) {
   
        tire = new Tire(size);
        System.out.println("底盘安装轮胎中...");
    }
}

轮胎类:

package com.example.springioc.v1;

public class Tire {
   
    public Tire() {
   
        System.out.println("打造默认尺寸轮胎中...");
    }
}

运行结果:

在这里插入图片描述

这种代码架构,每个类的控制权都在调用他的那一方中,调用的一方创造了怎样的他,那他就是怎样的。

如果想要更换任意尺寸的轮胎,那就需要传递一个size参数,此时要依次对于代码做修改。

首先是轮胎类,需要增加 size 属性,但是这样最上层的 Car 类并不能够选择自己想要的尺寸,仍然需要对于控制着 Tire 的Bottom进行添加参数以便Frame能够添加参数,这样依赖,Frame也得添加size参数,Car 也需要。

最终代码(对于每一级都添加了size参数):

汽车类:

package com.example.springioc.v1;

public class Car {
   
    // 汽车依赖于框架
    private Frame frame;

    // 对于汽车类添加了size参数构造
    public Car(int size) {
   
        frame = new Frame(size);
        System.out.println("汽车安装框架中...");
    }
}

框架类:

package com.example.springioc.v1;

public class Frame {
   
    // 框架依赖于底盘
    private Bottom bottom;
    public Frame(int size) {
   
        bottom = new Bottom(size);
        System.out.println("框架安装底盘中...");
    }
}

底盘类:

package com.example.springioc.v1;

import jdk.jfr.Frequency;

public class Bottom {
   
    // 底盘依赖于轮胎
    private Tire tire;
    public Bottom(int size
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值