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:

三大框架SSM:1)Spring 8大模块 2)SpringMVC (Spring的一部分) 3)MyBatis(操作数据库)

pt 009:

Spring特点

1.轻量:

从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。

Spring是非侵入式的:Spring应用中的对象不依赖于Spring的特定类。

2.控制反转

Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反------不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

3.面向切面

Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的------完成业务逻辑------仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

4.容器

Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建------基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例------以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。

5.框架

Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。

pt 010:

下载...略过: Spring 中文网 官网

pt 011:

jar包的简介:

相关推荐
Alan-Xia24 分钟前
使用jest测试用例之入门篇
前端·javascript·学习·测试用例
三天不学习31 分钟前
uniapp x 学习之 uts 语言快速入门
学习·uni-app
PinkandWhite2 小时前
MySQL复习笔记
数据库·笔记·mysql
蓑衣客VS索尼克2 小时前
无感方波开环强拖总结
经验分享·单片机·学习
肥肠可耐的西西公主2 小时前
前端(AJAX)学习笔记(CLASS 4):进阶
前端·笔记·学习
云上艺旅3 小时前
K8S学习之基础十五:k8s中Deployment扩容缩容
学习·docker·云原生·kubernetes·k8s
亭墨3 小时前
linux0.11内核源码修仙传第五章——内存初始化(主存与缓存)
linux·c语言·驱动开发·学习·缓存·系统架构
凡人的AI工具箱4 小时前
PyTorch深度学习框架60天进阶学习计划第14天:循环神经网络进阶
人工智能·pytorch·python·深度学习·学习·ai编程
我是大咖4 小时前
c语言笔记 一维数组与二维数组
c语言·笔记·算法
傍晚冰川4 小时前
【江协科技STM32】ADC数模转换器-学习笔记
笔记·科技·stm32·单片机·嵌入式硬件·学习