首页 > 其他分享 >Spring - DI 依赖注入和 IoC 容器

Spring - DI 依赖注入和 IoC 容器

时间:2023-09-13 22:23:37浏览次数:36  
标签:依赖 DI Spring 理解 OrderService IoC MySqlConnector

前言

先理解 DI 依赖注入再理解 Ioc 容器更好,不应该先理解 IoC 容器再理解 DI 依赖注入。

这两个东西必须要放在一起讲,但是又要分好顺序去理解。理解之前不能先看概念,非常地抽象,应该从“为什么”起理解。总而言之,这个两个东西的出现是为了降低程序的耦合度。

DI 依赖注入

Java 里面有一个东西叫作“接口”,还有一个东西叫“抽象类”。不过这里讲的是“接口”,不知道是否听说过“面向接口编程”,而不是“面向对象编程”。我的理解是,面向对象编程的同时,也要面向接口编程。

类之间的依赖

有多个数据库连接类

在调用层中,声明一个 OrderService 对象,并调用 getOrder 函数获取订单信息。

file:[src/service/OrderService.java]
/**
 * @description:
 * @package: service
 * @author: zheng
 * @date: 2023/9/13
 */
public class OrderService {

    private final MySqlConnector mySqlConnector = new MySqlConnector();

    public void getOrder() {
        // 1. 连接数据库
        mySqlConnector.connect();
        // 2. 操作数据库获取数据
        // ...

        System.out.println("获取到了订单信息!");
    }

}

OrderService 依赖了 MySqlConnector,目前这依赖线只有这一条,如果随着业务的增加,不止一个 Service,还有 LoginService、UserService、TeacherService 等,所以,依赖线就可能如下图所示,甚至更多:

依赖关系图

更改依赖类

标签:依赖,DI,Spring,理解,OrderService,IoC,MySqlConnector
From: https://www.cnblogs.com/Himmelbleu/p/17700946.html

相关文章

  • springcloud相关面试题
    (目录)springcloud相关面试题springcloud中网关起什么作用在SpringCloud中,网关起到了路由和过滤的作用。路由:网关通过配置路由规则,将请求转发到不同的服务实例上。它可以根据请求的URL、请求的HTTP方法、请求的Header等信息,将请求路由到相应的服务实例上。通过网关,可以实现......
  • Redis7 10大数据类型(Redis列表)
    一、常用二、单key多value三、简单说明一个双端链表的结构,容量是2的32次方减1个元素,大概40多亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景。left、right都可以插入添加;如果键不存在,创建新的链表;如果键已存在,新增内容;如果值全移除,对应的键也就消失了。它的底层实......
  • 如何获取自己Visual Studio中的_MSC_VER数值?
      本文介绍查看VisualStudio软件_MSC_VER值的方法。  _MSC_VER是微软公司推出的C/C++编译器——MSVC编译器的一个内置宏,其值表示当前VisualStudio软件中MSVC编译器的具体版本。不同的VisualStudio软件版本对应着不同的MSVC编译器版本——无论是不同发布年份的版本(例如Visua......
  • Codeforces Round 781 (Div. 2) B. Array Cloning Technique
    给一个长度为\(n\)的数组\(a\)。开始只有一份所给\(a\)的副本。你可以做以下两种操作:选择任意一个副本并且克隆它,然后将会多出一个克隆副本。交换两个元素,他们属于任意两个副本(可能是同一个)。需要判断最小操作数,使有一个副本的所有元素相同。观察一:只需要在开始的副本......
  • ubuntu redis安装
    1.1更新仓库sudoaptupdate1.2使用apt从官方Ubuntu存储库来安装Redissudoapt-getinstallredis-server二、设置密码2.1打开Redis配置文件redis.confsudovi/etc/redis/redis.conf2.2找到#requirepassfoobared这一行,将注释符号#去掉,将后面修改成自己的密......
  • spring-websocket 简单使用
    之前自己基于netty实现了websocket协议,实现单聊以及群聊。这里记录下spring封装的spring-websocket使用方式。1.后端1.pom<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation......
  • Codeforces Round 787 (Div. 3) B. Make It Increasing
    给一个长为\(n\)的数组\(a_1,a_2,\cdots,a_n\quad(0\leqa_i\leq10^9)\)。可以执行以下操作任意次:选择任意一个\(a_i\)并且执行\(a_i=\lfloor\frac{a_i}{2}\rfloor\)。输出最小操作次数,使得数组所有元素变为严格递增。观察:数组一些位置变小,将数组变为严......
  • springboot集成CAS客户端实现单点登录
    pom中引入依赖<!--cas--><dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-core</artifactId><version>3.6.2</version></dependen......
  • Spring MVC 教程,快速入门,深入分析
    SpringMVC教程,快速入门,深入分析资源下载:Spring_MVC_教程_快速入门_深入分析V1.1.pdfSpringMVC核心配置文件示例.rar 作者:赵磊博客:http://elf8848.iteye.com 目录一、前言二、springmvc核心类与接口三、springmvc 核心流程图四、springmvc DispatcherServlet......
  • Spring容器跳过指定对象初始化扫
    在Spring容器中,如果你希望跳过指定对象的初始化扫描,你可以使用`@ComponentScan`注解的`excludeFilters`属性来实现。`excludeFilters`属性可以指定扫描时需要排除的类或接口。例如,假设你有一个名为`MyBean`的对象,你不希望它被Spring容器初始化扫描。你可以创建一个自定义的过滤器来......