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

Spring笔记(1):概述

1、什么是Spring?

  • Spring是最受欢迎的企业级Java应用程序开发框架,使用它创建性能好、易于测试、可重用的代码。
  • Spring是一种轻量级的框架。
  • Spring框架的核心特性是开发任何Java应用程序,其目标是使得J2EE开发变得更容易,通过启用基于POJO模型来编程实践。

2、Spring的三层架构

  • 表现层:web层,其常见的设计模型为MVC(Moudle、View、Controller)
  • 业务层:service层
  • 持久层:dao层

3、Spring的优良特性

  • 非侵入式: 不依赖Spring的API。
  • 控制反转: IOC——Inversion of Control,是指Spring来控制创建新对象。
  • 依赖注入: DI——Dependency Injection,通过配置赋值,不需调用set方法设置。
  • 面向切面编程: AOP——Aspect Oriented Programming。
  • 容器: Spring是一个容器,它包含并且管理应用对象的生命周期。
  • 组件化: Spring实现了使用简单的组件配置组合成一个复杂的应用。在Spring中使用XML和Java注解组合这些对象。
  • 一站式: IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。

4、Spring框架的优点

  • 可以使开发人员使用POJOs开发企业级的应用程序,可以选择使用一个稳定的应用程序服务器如Tomcat或其它的应用程序服务器。
  • Spring在一个单元模式中是有组织的,即使包和类的数量非常大,只需要热加载需要的工作包。
  • Spring容器能够加载更多的优秀开源框架技术。
  • 测试更容易,使用JavaBean-style POJOs,使用依赖注入注入测试数据。
  • Spring的web框架是一个MVC框架,MVC模式导致应用程序的不同方面分离,同时提供这些元素之间的松散耦合。
  • Model负责封装了应用程序数据,通常它们由POJO类组成。
  • View负责渲染模型数据,一般来说它生成客户端浏览器可以解释HTML输出。
  • Controller负责处理用户请求并构建适当的模型,并传递给视图进行渲染。
  • Spring封装了难度较高的JavaEE的API。
  • 轻量级的IOC容器
  • Spring提供一直的事务管理接口,可向下扩展到本地事务(使用一个单一数据库)并扩展到全局事务(如JTA)

5、依赖注入DI
依赖注入是控制反转的一种,当编写一个复杂的Java应用程序时,应用程序应该尽可能独立于其它java类,增加这些类可重用性。当单元测试时,可以使它们独立于其他类进行测试。

依赖注入是什么?
依赖: 是两个类之间相关联
注入: IOC携带类B的信息赋值给类A

如何实现依赖注入?
1、通过向构造函数传参实现
2、通过使用setter方法修改参数

6、面向切面编程AOP

  • 一个程序中跨越多个点的功能被称为横切关注点,这些横切关注点在概念上独立于业务逻辑,例如日志,声明事务,缓存等。
  • 在OOP中模块化的关键单元是类,而AOP中模块化的关键单元是方面。
  • AOP提供面向方面的程序设计,可以定义诸如方法拦截器和切入点等,从而实使实现功能的代码彻底解耦。

7、Spring框架的特点

  • 方便解耦,简化开发: 将所有对象的创建和依赖关系的维护交给Spring管理。
  • 方便集成框架: Spring不排斥其它框架,内部提供了Struts2,Hibernate,MyBatis等框架的支持。
  • 降低J2EE API的使用难度: Spring对JDBC、JavaMail、远程调用等API进行封装。
  • 方便测试: Spring支持JUnit4,可以方便通过注释测试Spring程序。
  • AOP编程的支持: Spring提供面向切面编程,可以实现对程序进行权限拦截和运行监控等功能。
  • 声明式事务的支持: 只需要通过配置完成对事务的管理。

相关文章:

Spring笔记(1):概述

1、什么是Spring? Spring是最受欢迎的企业级Java应用程序开发框架,使用它创建性能好、易于测试、可重用的代码。Spring是一种轻量级的框架。Spring框架的核心特性是开发任何Java应用程序,其目标是使得J2EE开发变得更容易,通过启用…...

工程机械焊接件焊接结构件三维扫描检测外观质量控制-CASAIM三维扫描检测仪

焊接已发展为制造业中的一种重要的加工方法,广泛应用于航空、航天、冶金、石油、汽车制造以及国防等领域。工程机械焊接件品种繁多、几何形状复杂,焊接件质量的好坏将直接影响到产品的使用寿命长短。对焊缝表面尺寸测量及评定表面焊缝缺陷时,…...

使用linux部署项目步骤

文章目录前言一、服务器环境配置二、数据库导入三、项目打包1、修改项目中的访问路径2、修改db.properties的数据库访问路径3、打包4、修改配置,启动服务四、测试总结前言 今天学习了在服务器中部署项目,记录一下 一、服务器环境配置 首先要安装VMware&…...

pt02-list-tuple-dir

容器类型 通用操作 数学运算符 (1) 用于拼接两个容器 (2) 用原容器与右侧容器拼接,并重新绑定变量 (3) * 重复生成容器元素 (4) * 用原容器生成重复元素, 并重新绑定变量 (5) !&#xff1a;依次比较两个容器中元素,一但不同则返回比较结果。< < > > 意…...

高端电器新十年,求解「竞速突围」

竞争激烈的高端电器品牌们&#xff0c;平时王不见王&#xff0c;但也有例外。海尔、博西、海信、创维、方太、老板等等近乎中国电器行业所有一线品牌副总裁级别以上高层&#xff0c;2月22日都现身于上海&#xff0c;来参加一场由红星美凯龙攒起来的高端电器局&#xff0c;2023中…...

[Android Studio] Android Studio使用keytool工具读取Debug 调试版数字证书以及release 发布版数字证书

&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Android Debug&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Topic 发布安卓学习过程中遇到问题解决过程&#xff0c;希望我的解决方案可以对小伙伴们有帮助。 &#x1f4cb;笔记目…...

2023年金三银四必备软件测试常见面试题1500问!!!【测试思维篇】

五、测试思维5.1 打电话功能怎么去测&#xff1f;我们会从几个方面去测试&#xff1a;界面、功能、兼容性、易用性、安全、性能、异常。1&#xff09;界面我们会测试下是否跟界面原型图一致&#xff0c;考虑浏览器不同显示比例&#xff0c;屏幕分辨率。2&#xff09;功能&#…...

推荐四款自用的电脑神器

作为一个经常鼓捣电脑的小编来说&#xff0c;无论是写文章、截图、办公方面都缺少不了一些好用的软件&#xff0c;今天就给大家盘点一些我推荐用的办公效率工具&#xff0c;让你的效率事半功倍。 写文章神器 以前写文章一直是在公众号编辑上直接写的&#xff0c;缺点就是格式有…...

CSDN 竞赛 32 期

CSDN 竞赛 32 期1、题目名称&#xff1a;传奇霸业2、题目名称&#xff1a;严查枪火3、题目名称&#xff1a;蚂蚁家族4、题目名称&#xff1a;运输石油小结1、题目名称&#xff1a;传奇霸业 传奇霸业&#xff0c;是兄弟就来干。 小春(HP a)遇到了一只黄金哥布林(HP x)。 小春每…...

【路径规划】基于前向动态规划算法在地形上找到最佳路径(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

spring boot maven打包jar包太大,怎么办?这个方法解决你的烦恼

在springboot maven项目中&#xff0c;有两种打包方式&#xff0c;一种是war包&#xff0c;一种是jar&#xff0c;今天我们讲一下jar的打包方式。但是在jar包打包只要我们发现&#xff0c;我们的项目jar太大了&#xff0c;每次上传到服务器的时候非常的慢&#xff0c;接下来我们…...

Spring之AOP理解及使用

文章目录AOP是什么AOPSpring的通知类型1.Before通知2. AfterReturning通知3.AfterThrowing通知4. After通知5. Around通知动态代理JDK动态代理CGLib动态代理动态代理的代码展示AOP使用切面类的配置最后大家好&#xff0c;我是Leo&#xff01;今天给大家带来的是关于Spring AOP的…...

微信小程序和webview使用postMessage交互

小程序和webview能交互&#xff0c;但是没有你想的那个完美小程序向webview传递参数只能使用url携带参数webview向小程序传递参数可以使用postMessage, 但是注意了&#xff0c;postMessage只会在特定的时机执行&#xff0c;请看官方文档由此可见&#xff0c;如果你想点击webvie…...

pytorch-自动求导机制,构建计算图进行反向传播,需要注意inplace操作导致的报错,梯度属性变化

PyTorch 作为一个深度学习平台&#xff0c;在深度学习任务中比 NumPy 这个科学计算库强在哪里呢&#xff1f;一是 PyTorch 提供了自动求导机制&#xff0c;二是对 GPU 的支持。由此可见&#xff0c;自动求导 (autograd) 是 PyTorch&#xff0c;乃至其他大部分深度学习框架中的重…...

【Project】项目管理软件学习笔记

一、前言使用Project制定项目计划步骤大致如下&#xff1a;以Project2013为例&#xff0c;按照上图步骤指定项目计划。二、实施2.1 创建空白项目点击文件——新建——空白项目&#xff0c;即完成了空白项目的创建&#xff0c;在此我把该项目保存为60mm项目管理.mpp&#xff0c;…...

【算法设计-分治思想】快速幂与龟速乘

文章目录1. 快速幂2. 龟速乘3. 快速幂取模4. 龟速乘取模5. 快速幂取模优化1. 快速幂 算法原理&#xff1a; 计算 311&#xff1a; 311 (35)2 x 335 (32)2 x 332 3 x 3仅需计算 3 次&#xff0c;而非 11 次 计算 310&#xff1a; 310 (35)235 (32)2 x 332 3 x 3仅需计算…...

Kafka(十一) 如何保证数据的不重复和不丢失

数据不丢失 1&#xff09;从生产端&#xff1a;acks -1&#xff0c;&#xff08;ack应答机制&#xff09;从生产端到节点端&#xff0c;当所有isr集合里的节点备份完毕后返回成功&#xff1b; 2&#xff09;从节点端&#xff1a;每个partition至少需要一个isr节点&#xff0…...

解决树莓派 bullseye (11) 系统无法通过 xrdp 远程连接的问题

我手上有一台树莓派 4B&#xff0c;使用官方镜像烧录器烧录老版本操作系统 buster (10) 时可以正常通过 Windows 远程桌面连接上&#xff0c;但换成最新的 bullseye (11) 系统后却无法正常连接远程桌面。 问题复现&#xff1a; 使用官方镜像烧录器烧录&#xff0c;配置用户名为…...

微信公众号历史作品定向采集

最近有遇到微信公众号历史作品采集的需求,这里做一下记录, 登录自己注册好的的微信公众号后台进入创作界面,点击右上角的引用: 弹出如下界面: 选择查找公众号文章,输入要查找的公众号: 回车: 同时就可以打开F12开始抓包,选择公众号点击进入: appmsg?action=li…...

Vue学习笔记(3)

3.1 计算属性和监视属性 3.1.1 计算属性 计算属性是一种计算值的方式&#xff0c;可以根据其他属性的值来动态地计算新的属性值。计算属性可以缓存计算结果&#xff0c;当依赖的属性发生改变时&#xff0c;才会重新计算。在Vue中&#xff0c;可以使用computed选项来定义计算属…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态&#xff0c;这是一个可以多选的控件。 二、属性 其实功能大差不差&#xff0c;除了特殊的几个外&#xff0c;与button基本相同&#xff0c;所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究

摘要&#xff1a;在消费市场竞争日益激烈的当下&#xff0c;传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序&#xff0c;探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式&#xff0c;分析沉浸式体验的优势与价值…...

基于 HTTP 的单向流式通信协议SSE详解

SSE&#xff08;Server-Sent Events&#xff09;详解 &#x1f9e0; 什么是 SSE&#xff1f; SSE&#xff08;Server-Sent Events&#xff09; 是 HTML5 标准中定义的一种通信机制&#xff0c;它允许服务器主动将事件推送给客户端&#xff08;浏览器&#xff09;。与传统的 H…...

基于谷歌ADK的 智能产品推荐系统(2): 模块功能详解

在我的上一篇博客&#xff1a;基于谷歌ADK的 智能产品推荐系统(1): 功能简介-CSDN博客 中我们介绍了个性化购物 Agent 项目&#xff0c;该项目展示了一个强大的框架&#xff0c;旨在模拟和实现在线购物环境中的智能导购。它不仅仅是一个简单的聊天机器人&#xff0c;更是一个集…...

Web APIS Day01

1.声明变量const优先 那为什么一开始前面就不能用const呢&#xff0c;接下来看几个例子&#xff1a; 下面这张为什么可以用const呢&#xff1f;因为复杂数据的引用地址没变&#xff0c;数组还是数组&#xff0c;只是添加了个元素&#xff0c;本质没变&#xff0c;所以可以用con…...