Spring学习笔记1 启示录

2023-09-21 16:10:01

写段代码,引出Spring的好处

创建个空工程,然后在工程里建模块

可能是IEAD版本问题,每次建新的空工程,都需要退出重进

设置下maven和Encoding

新建模块

持久层接口

持久层实现类

业务层接口

业务层实现类

控制层(表现层)

建个测试类测试

分析这个程序存在的问题

假设现在新需求是因某种原因需要改变Dao层的实现类

并且在业务层将原先的对象改变成new UserDaoImplForOracle()

这种修改方法,去修改了以前运行正常的代码

违背了OCP开闭原则

软件开发七大原则(所有语言开发软件):

OCP原则:在软件开发过程中应当对扩展开放,对修改关闭。
OCP是最核心,最基本的,其他六个原则都是为这个原则服务的.
OCP开闭原则核心:只要你在扩展系统功能的时候.没有修改以前写好的代码,那么你就是符合OCP原则.反之,如果在扩展系统功能的时候,修改了之前的代码,那么这个设计是失败的,违背了OCP原则.
这里还违背了依赖倒置原则(DIP原则)
依赖倒置原则倡导面向接口编程,面向抽象编程,不要面向具体编程
让上层不再依赖下层,下⾯改动了,上⾯的代码不会受到牵连 。这样可以⼤⼤降低程
序的耦合度,耦合度低了,扩展⼒就强了,同时代码复⽤性也会增强。( 软件七⼤开发原则都是在为解耦合服务

我们希望看到的效果是

但实际出现的问题是,这么写都是null

抛开null的问题,程序这么设计:

1.不再关心具体指向的对象是谁,面向接口编程(DI依赖注入)

2.将创建具体对象的权力交出去(IOC控制反转)

控制反转(IOC Inversion of Control)

1.不在程序中采用硬编码的方式来new对象.(new对象不管了,交出去了)

2.不在程序中采用硬编码的方式维护对象关系。(对象之间关系的维护,不管了,交出去了)

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

Spring框架:通过DI依赖注入实现IOC控制反转

控制反转实现方式有多种.其中比较重要的叫做:依赖注入(Dependency Injection,简称:DI)

控制反转IOC是思想,依赖注入DI是控制反转的实现

依赖注入DI常见两种注入方式:

1.Set注入:执行set方法给属性赋值

2.构造方法注入:执行构造方法给属性赋值

所谓依赖注入就是要给它注入值

那么所谓的DI依赖注入的两种方式

1.Set方法注入

2.构造方法注入

几个术语

OCP:开闭原则,对扩展开放,对修改关闭(开发原则)

PID:依赖倒置原则,面向接口,抽象编程,不要面向具体编程.(开发原则)     

IOC:控制反转(一种思想,一种新型设计模式)

DI: 依赖注入(控制反转思想的具体实现方式)

更多推荐

ELK 企业级日志分析系统

1、ELK简介ELK平台是一套完整的日志集中处理解决方案,将ElasticSearch、Logstash和Kiabana三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求。ElasticSearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。Elastics

LabVIEW开发基于物联网的多功能功率分析仪

LabVIEW开发基于物联网的多功能功率分析仪根据技术规则,电气元件网络中的单个被创建为在标称正弦波振动制造频率下运行。失真顺序的电流和电压波与正弦波不同,它们或多或少地扭曲成形状。它是由交流网络中非线性组件的存在引起的,例如静态转换器、旋转电气设备和电力变压器。由于其独特的特性,包含功率开关静态转换器的电流消费者是网

68、Spring Data JPA 的 方法名关键字查询(全自动,既不需要提供sql语句,也不需要提供方法体)

1、方法名关键字查询(全自动,既不需要提供sql语句,也不需要提供方法体)2、@Query查询(半自动:提供SQL或JPQL查询)3、自定义查询(全手动)★方法名关键字查询(全自动)(1)继承CrudRepository接口的DAO组件可按特定规则来定义查询方法,只要这些查询方法的方法名遵守特定的规则,SpringDa

如何进行性能测试

文章目录前言什么是性能测试为什么要做性能测试怎么做我们的性能测试SoloPiSoloPi的介绍和安装SoloPi的性能数据前言随着科学技术的迅速发展,信息时代离不开软件,软件的成功上线离不开软件测试的功劳,因此软件测试对于软件的重要性不言而喻。性能测试作为软件测试中的一部分,通过自动化测试工具模拟多种正常、峰值以及异常

Flutter实现地图上汇聚到一点的效果。

要求效果:实现的效果:代码:选择点的界面:import'dart:math';import'package:flutter/material.dart';import'package:get/get.dart';import'package:kq_flutter_widgets/widgets/animate/mapC

hive基于新浪微博的日志数据分析——项目及源码

有需要本项目的全套资源资源以及部署服务可以私信博主!!!该系统的目的是利用大数据技术,分析新浪微博的日志数据,从而探索用户行为、内容传播和移动设备等各个层面的特性和动向。这项研究为公司和个人在制定营销战略、设计产品和提供用户服务时,提供了有价值的参考和辅助。利用Hive平台,该系统可以处理和分析大量的微博数据,为我们提

数据治理-EDRM电子取证

EDRM是电子取证标准和指南的组织,该框架提供了一种电子取证的方法,对于涉及确定相关内部数据的存储方式和位置、适用什么保留策略、哪些数据不可访问以及哪些工具可用于协助识别流程的人员来说,这种方法非常方便。EDRM模型假定数据或信息治理已到位。该模型包括8个可以迭代的电子取证阶段,随着电子取证的发展,可取证的数据和信息的

C++:string类的常用接口说明及其模拟实现

本文主要介绍string类和该类常用的接口,并根据接口功能对其进行模拟实现。目录一、string类的常用接口说明1.string类对象的常见构造2.string类对象的容量操作3.string类对象的访问及遍历操作4.string类对象的修改操作5.string类非成员函数二、string的模拟实现1.默认成员函数和成

【CDN和UDN】CDN和UDN技术特点以及使用场景

内容分发网络(CDN)和用户自定义网络(UDN)是两种不同的网络技术,在选择时,往往不能准备把握具不同的技术特点和应用场景。CDN主要用于加速内容分发,而UDN则主要用于支持用户自定义的网络需求。本文简要介绍下内容分发网络(CDN):一种通过在多个地理位置部署缓存服务器来加速内容分发的网络技术。当用户请求内容时,CDN

【Seata】05 - Seata Saga 模式简单整理、Docker 部署 Nacos 单机(基于 Jpom)相关配置

文章目录前言参考目录Saga模式知识点简单整理1、适用场景、优缺点2、Saga模式的使用3、可能出现的问题以及解决方法Docker部署Nacos单机(基于Jpom)步骤1:拉取镜像步骤2:构建容器步骤3:Nacos设置Seata配置文件步骤4:修改SeataServer相关配置步骤5:修改SeataClient相关配置

@Autowire、@Recourse用啥?

在使用IDEA写Spring相关的项目的时候,在字段上使用@Autowired注解时,总是会有一个波浪线提示:Fieldinjectionisnotrecommended.这是为啥呢?今天就来一探究竟。众所周知,在Spring里面有三种可选的注入方式:构造器注入、Setter方法注入、Field注入,我们先来看下这三种

热文推荐