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

Spring学习笔记:Day2

昨天定的学习计划发现通过文心4.0来实现不靠谱,坑太多,今天开始跟随B站进行学习,争取10-15天学习一遍,冲啊!
地址:001-课程介绍_哔哩哔哩_bilibili


今日规划:

pt 001 - pt 018,提到的全部复现一遍。


笔记:

pt 001 - pt 002:

按照地址来将管理工具maven安装:轻松搞定Maven安装与配置_哔哩哔哩_bilibili

pt 003:

表示层web->业务层service->持久层dao,从test来调用

但是每个模块均会用到UserDaoImplForMySQL,这样在拓展时,牵一发而动全身,会影响之前正常运行的代码。

pt 004:

OCP开闭原则(Open-Closed Principle)
    * 什么是OCP?
        OCP是软件七大开发原则当中最基本的一个原则:开闭原则
        对什么开?对扩展开放。
        对什么闭?对修改关闭。

    * OCP原则是最核心的,最基本的,其他的六个原则都是为这个原则服务的。
    * OCP开闭原则的核心是什么?
        只要你在扩展系统功能的时候,没有修改以前写好的代码,那么你就是符合OCP原则的。
        反之,如果在扩展系统功能的时候,你修改了之前的代码,那么这个设计是失败的,违背OCP原则。
    * 当进行系统功能扩展的时候,如果动了之前稳定的程序,修改了之前的程序,之前所有程序都需要进行重新测试。这是不想看到的,因为非常麻烦。

pt 005:

依赖倒置原则(DIP原则(Dependency Inversion Principle)
    * 什么是依赖倒置原则?
        面向接口编程,面向抽象编程,不要面向具体编程。(底层的模块不要具体的实现,只提供接口(否则拓展时要改之前的代码,具体了))
    * 依赖倒置原则的目的?
        降低程序的耦合度,提高扩展力。
    * 什么叫做符合依赖倒置?
        上 不依赖 下,就是符合。
    * 什么叫做违背依赖倒置?
        上 依赖 下,就是违背。
        只要“下”一改动,“上”就受到牵连。

pt 006:

当前程序的设计,显然既违背OCP,又违背DIP,怎么办?
    可以采用“控制反转”这种编程思想来解决这个问题。

    控制反转:IoC(Inversion of Control)
    反转是什么呢?
        反转的是两件事:
            第一件事:我不在程序中采用硬编码的方式来new对象了。(new对象我不管了,new对象的权利交出去了。)
            第二件事:我不在程序中采用硬编码的方式来维护对象的关系了。(对象之间关系的维护权,我也不管了,交出去了。)

通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。

    控制反转:是一种编程思想。或者叫做一种新型的设计模式。由于出现的比较新,没有被纳入GoF23种设计模式范围内。

pt 007:

Spring框架

    * Spring框架实现了控制反转IoC这种思想
        Spring框架可以帮你new对象。
        Spring框架可以帮你维护对象和对象之间的关系。
    * Spring是一个实现了IoC思想的容器。
    * 控制反转的实现方式有多种,其中比较重要的叫做:依赖注入(Dependency Injection,简称DI)。
    * 控制反转是思想。依赖注入是这种思想的具体实现。
    * 依赖注入DI,又包括常见的两种方式:
        第一种:set注入(执行set方法给属性赋值)
        第二种:构造方法注入(执行构造方法给属性赋值)
    * 依赖注入 中 “依赖”是什么意思? “注入”是什么意思?
        依赖:A对象和B对象的关系。
        注入:是一种手段,通过这种手段,可以让A对象和B对象产生关系。
        依赖注入:对象A和对象B之间的关系,靠注入的手段来维护。而注入包括:set注入和构造注入。

pt 008:


http://www.kler.cn/news/155266.html

相关文章:

  • docker容器中创建非root用户
  • PMP-01
  • Docker安装Elasticsearch以及ik分词器
  • 8-1运用指针比较三个数的大小
  • 深入理解Servlet(下)
  • 【车载开发系列】FlashMemory基本概念
  • 使用Redis和opcache为网站加速教程
  • Filament引擎分析--command抽象设备API
  • 深入理解网络非阻塞 I/O:NIO
  • zabbix_sender——向zabbix交互的sdk
  • Pandas在Excel同一个sheet里插入多个Dataframe和行
  • Leetcode.330 按要求补齐数组
  • ★543. 二叉树的直径
  • 架构图是什么,怎么做?
  • 第六十四周周报
  • c语言-结构体
  • 慢 SQL 分析及优化
  • 项目开发维护技术文档(梳理总结中)
  • Docker + Jenkins + Nginx实现前端自动化部署
  • 大型语言模型在实体关系提取中的应用探索
  • Unity中Shader需要用到的C#脚本学习路线(个人自学路线)
  • 大小堆的实现(C语言)
  • 第九节HarmonyOS 常用基础组件2-Image
  • 基于eBPF检测非法调试行为
  • 软件工程期末复习(1)
  • 基于搜索协议实现工业设备升级
  • PyLMKit(3):基于角色扮演的应用案例
  • c语言-联合体和枚举
  • Pandas时序数据分析实践—基础(1)
  • 【数据结构/C++】树和二叉树_二叉链表