Spring相关知识点
概述
分层的轻量级的全栈开源框架
展示层SprigMVC
持久层 Spring JDBCTemplate
业务层事务管理
注:
轻量级:API简单
全栈:各层都有相应解决方案
在Spring的体系结构中,由上而下,逐层依赖
Spring相当于是一个粘合剂,将各层的bean配置到IOC容器中
优点
1.低侵入式设计,代码的污染极低
2. 独立于各种服务器 write once runanyway
3 ioc容器提高组件的解耦
4.Spring提高了与第三方框架的良好整合。简化底层数据库的访问
5.并不强制应用程序完全依赖Spring
注:
污染极低:简单来说就是去除框架后,代码的改动大小,去除框架后,只需要修改一些配置信息
补充(了解):
aop编程的支持:不容易用oop实现的功能,可以用aop轻松实现
声明式事务的支持,传统;采用编码的方式声明事务,声明式可以一次性声明许多事务
方便程序的测试:可以用非容器依赖的方式进行几乎所有的测试工作
传统开发模式的弊端
1.对象之间耦合度高
当用到一个对象中的方法时,通常会在一个对象内部去new另一个对象的实例,然后调用其方法
解决:对象与对象之间不再直接打交道,需要对象时,由容器提供
Spring提供了一个IOC容器,根据配置文件中的信息,进行对象的创建和相关依赖的注入
IOC(Inversion of Controller)
主动创建对象,变为由IOC容器为调用者的成员进行赋值。
1.谁控制、控制了什么
当某个java对象需要调用另一个Java对象的方法时,传统模式下会有两种做法。
一:调用者【主动】创建被依赖依赖,然后再调用被依赖对象的方法
二: 简单工厂模式,调用者首先找到被依赖对象的工厂,然后主动通过工厂获取被依赖对象,最后调用被依赖对象的方法
2.何为反转
调用者主动创建依赖对象改为被动接受Spring容器为调用者的成员赋值
总结:由调用者主动控制对象的创建变为容器控制对象的创建,由主动创建变为被动接受
DI(Dependency Injection)
拿到对象的属性,已经被注好相关值,直接使用即可
方式:
1.值注入:通过成员变量的setter方法进行注入
2.构造方式注入
区别:通过成员变量的setter方法进行注入 简单易理解使用较多,构造方式注入可以决定依赖关系的注入顺序 所有的依赖关系全部在构造器内设定、无需担心后续代码对依赖关系产生破坏。
总结:设值注入为主,构造注入为辅 依赖关系无变化的注入,构造注入为主,其它值注入
Bean
IOC容器创建管理的Java对象
作用域:
1. singleton 单例模式 bean 在整个容器中仅存在一个实例
2.prototype 每次getBean时都将产生一个实例
3.request 一次请求将产生一个新对象
4.seeion域
5.global session 每个全局的session对应一个Bean实例
注:3、4、5仅在web应用程序中IOC容器创建管理的Java对象
获取方式:
ApplicationContext中获取
可以通过id或者类型进行获取
相关实现类:
ClassPathXmlApplicaionContext:从resources目录根据配置文件创建Spring容器
FileSystemXmlApplicationContext:根据文件的绝对路径创建Spring容器
AnnotationConfigApplciaitonContext(xxx.class)
WebApplicationContextUtils:导入Spring-web后,获取容器的API为此
数据源(连接池)
数据源是提高程序性能出现的
事先实例化数据源,初始化部分连接资源
使用连接资源时从数据源获取,使用完毕后将连接资源归还给数据源
常用数据源Druid c3p0
重点配置
<bean>标签
id属性:在容器中Bean实例的唯一标识,不允许重复
class属性:要实例化的Bean的全限定名
scope属性: Bean的作用范围,常用的是Singleton(默认)和prototype
<propety>标签:属性注入
name属性:属性名称
value属性:注入的普通属性值
ref属性:注入的对象引用值
<list> 标签
<map>标签
<properties>标签
<constructor-arg>标签
原始注解
主要用来替换Bean的相关配置
@Componnet 用在类上实例化bean
@Controller 用在web层类上用来实例化bean
@Service 使用在service层类上实例化bean
@Respository 使用在dao层类上实例化bean
@Autowired 使用在字段上根据类型进行依赖注入
@Qualifier 结合@AutoWired根据名称进行依赖注入
@Resource 相当于@AutoWired +@Qualifier 根据名称进行依赖注入, 需加name
@Value 注入普通属性
@Scope 标注bean的作用范围
@PostConstrust 使用在方法上,标注该方法是bean的初始化方法
@PreDestroy 使用在方法上,标注该方法是bean的销毁方法
使用原始注解,需要用到包扫描
<context:component-scan base-package="edu.shu.spring.domain"/>
注:可以同时使用到两个包扫描
新注解
以上注解不能替代所有的Spring配置
1.第三方bean
2.引入的其它文件
3.零配置中需要用到的包扫描
@Configuration 用在类上,标志该类是一个Spring的配置类
@ComoponentSan (包扫描路径) 用在类上
@import (xxx.class)用来加载分的配置类, 里面其实是一个数组
出错点
getBean方法调用异常
Spring中提供了有参构造,不提供默认的无参构造,会导致getBean时异常
原因:getBean方法内部通过反射的方式创建对象
配置文件
开发阶段和运行阶段一样,项目发布后,内部可以动态更改
相关文章:
Spring相关知识点
概述 分层的轻量级的全栈开源框架 展示层SprigMVC 持久层 Spring JDBCTemplate 业务层事务管理 注: 轻量级:API简单 全栈:各层都有相应解决方案 在Spring的体系结构中,由上而下,逐层依赖 Spring相当于是一个粘合剂&…...
Nginx专题--反向代理(未完成)
反向代理 正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。 反向代理:其实客户端对代理是无感知的&…...
什么是搜索引擎?2023 年搜索引擎如何运作?
目录 什么是搜索引擎?搜索引擎的原理什么是搜索引擎爬取?什么是搜索引擎索引?什么是搜索引擎检索?什么是搜索引擎排序? 搜索引擎的目的是什么?搜索引擎如何赚钱?搜索引擎如何建立索引?网页抓取文本处理建…...
Spring系列一:spring的安装与使用
文章目录 💞 官方资料🍊Spring5下载🍊文档介绍 💞Spring5🍊内容介绍🍊重要概念 💞快速入门🍊Spring操作演示🍊类加载路径🍊Debug配置🍊Spring容器…...
Ubuntu--科研工具系列
翻译系列 pot-desktop github链接: https://github.com/pot-app/pot-desktop 下载deb Releases pot-app/pot-desktop GitHub 安装过程 在下载好的deb目录下打开终端(自动安装依赖) sudo apt install "XXX.deb" (后面可以直接托文件到终端&#…...
【压测指南|压力测试核心性能指标及行业标准】
文章目录 压力测试核心性能指标及行业标准指标1:响应时间指标2:吞吐量(TPS)指标3:失败率总结: 压力测试核心性能指标及行业标准 在做压力测试时,新手测试人员常常在看报告时倍感压力:这么多性能…...
spark-submit --files
一、原理 spark-submit --files通常用来加载外部资源文件,在driver和executor进程中进行访问 –files和–jars基本相同 二、使用步骤 2.1 添加文件 spark-submit --files file_paths 其中file_paths可为多种方式:file: | hdfs:// | http:// | ftp:// |…...
应该选云服务器还是物理服务器
应该选云服务器还是物理服务器 一、为什么需要云服务器或独立服务器取代共享主机 在最早之前,大多数的网站都是共享主机开始的,这里也包含了云虚拟机。这一类的站点还有其他站点都会共同托管在同一台服务器上。但是这种共享机只适用于小的网站ÿ…...
【iOS】动态链接器dyld
参考:认识 dyld :动态链接器 dyld简介 dyld(Dynamic Linker)是 macOS 和 iOS 系统中的动态链接器,它是负责在运行时加载和链接动态共享库(dylib)或可执行文件的组件。在 macOS 系统中…...
RocketMQ集成Springboot --Chapter1
RocketMQ集成Springboot 三种消息发送方式 生产者 引入依赖 <!--⽗⼯程--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.2.RELEASE</version><…...
【Unity3D日常开发】Unity3D中比较string字符串的常用方法
推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 字符串string的比较有很多方法,比如: …...
vue3+ts+element-plus 之使用node.js对接mysql进行表格数据展示
vue3tselement-plus axiosnode.jsmysql开发管理系统之表格展示 ✏️ 1. 新建一个node项目* 初始化node* 安装可能用到的依赖* 配置文件目录* 添加路由router1. 添加router.js文件,添加一个test目录2. 修改app.js ,引入router📒 3. 启动并在浏览器打开 * …...
华为eNSP:isis配置跨区域路由
一、拓扑图 二、路由器的配置 1、配置接口IP AR1: <Huawei>system-view [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.1 24 [Huawei-GigabitEthernet0/0/0]q AR2: [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.2 24 [Huawe…...
IUPAC和SMILES的相互转换
这种方法只能解决非常简单的转换,更难的SMILES之间应该是无法直接转换,我可能很多人都使用神经网络解决 ,暂时还没仔细看,后面再仔细看吧... 简单的转换: import urllib.error import urllib.parse import urllib.re…...
逻辑回归概述
逻辑回归介绍 1. 逻辑回归的应用场景 逻辑回归(Logistic Regression)是机器学习中的 一种分类模型 ,逻辑回归是一种分类算法,虽然名字中带有回归。由于算法的简单和高效,在实际中应用非常广泛 广告点击率是否为垃圾邮件是否患病信用卡账单是否会违约 逻辑回归就是解决二…...
React 框架下自己写一个braft编辑器,然后将编辑器内容展示在网页端
1.首先自己写一个编辑器 输入文字; 支持选择表情; 可添加小程序链接;可添加网页链接;并且可以编辑删除;效果如下 2.输入完毕后,点击文本输入框保存,将便携式内容回显, 渲染时…...
基于DNN深度学习网络的OFDM+QPSK信号检测算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................................. Transmitt…...
学生管理系统-05封装选项卡
一、选项卡的添加 1、在router/index.js修改之前的动态添加二级路由的代码 router.addRoute("homeName",{ path:routeObj.path, component:()=>import(`@/views${routeObj.permission}.vue`), meta:{ name:routeObj.title …...
关于一些C++、Qt、Python方面的术语
杂鱼之前纯粹用python没细致理解过的术语整理一下,常看常新( 定义 (Definition): 定义是指给一个实体分配内存空间,以便在程序中使用。在C和Python中,这个实体可以是变量、函数或类。在C中,定义通常是在声…...
k8s中强制删除pv
K8s 集群内有一个已经不再使用的 PV,虽然已经删除了与其关联的 Pod 及 PVC,并对其执行了删除命令,但仍无法正常删除,一直处于 Terminating 状态: 解决办法: 1. 获取pv信息 kubectl get pv 2. 解除pv锁定 …...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
