1.Spring概述(Spring官方文档总结)

news/2024/5/18 20:53:59/文章来源:https://blog.csdn.net/qq_56876713/article/details/128197979

目录

1.1jdk环境依赖

1.2 Spring介绍

1.3 Spring历史

1.4 设计理念


1.1 jdk环境依赖

从Spring Framework 5.1开始,Spring需要JDK 8+ (Java SE 8+),并提供对JDK 11 LTS的开箱即用支持。建议将Java SE 8 update 60作为Java 8的最低补丁版本,但通常建议使用最新的补丁版本。

1.2 Spring介绍

Spring分为许多模块,应用可以选择他们所需要的模块。Spring的核心模块是core container(核心容器),It including a configuration model and a dependency injection mechanism。除此之外,Spring框架还为不同的应用程序体系结构提供基础支持,包括消息传递、事务数据和持久性以及web

1.3 Spring历史

创建Spring的主要目的是用来替代更加重量级的Java企业级技术,尤其是EJB(Enterprise JavaBean

Spring框架通过以下规范,简化了早期J2EE规范的复杂性。

    Servlet API (JSR 340)
    WebSocket API (JSR 356)
    Concurrency Utilities (JSR 236)
    JSON Binding API (JSR 367)
    Bean Validation (JSR 303)
    JPA (JSR 338)
    JMS (JSR 914)
    as well as JTA/JCA setups for transaction coordination, if necessary.
    the Dependency Injection (JSR 330) and Common Annotations (JSR 250)

1.4 设计理念

学习框架时,不仅仅需要知道它是怎么使用和怎么做的,更需要了解它遵循的原则。

Spring最根本的使命:简化Java开发
这是一个郑重的承诺。许多框架都声称在某些方面做了简化,但Spring的目标是致力于全方位的简化Java开发。
Spring是如何简化Java开发的?
为了降低Java开发的复杂性,Spring采取了以下4种关键策略:
1.基于POJO的轻量级和最小侵入性编程

很多框架(如Struts)通过强迫应用继承它们的类或实现它们的接口从而导致应用与框架绑死,

Spring不会强迫你实现接口或继承类,相反,在基于Spring构建的应用中,它的类通常没有任何痕迹表明你使用了Spring。最坏的场景是,一个类或许会使用Spring注解,但它依旧是POJO。

尽管形式看起来很简单,但POJO一样可以具有魔力。Spring赋予POJO魔力的方式之一就是通过DI来装配它们

2.通过依赖注入和面向接口实现松耦合;

在项目中应用DI(Dependency Injection),代码会变得异常简单并且更容易理解和测试。

任何一个有实际意义的应用都会由两个或者更多的类组成,这些类相互之间进行协作来完成特定的业务逻辑。按照传统的做法,每个对象负责管理与自己相互协作的对象(即它所依赖的对象)的引用,这将会导致高度耦合和难以测试的代码。

package com.Spring.Knight;public class DamselResuingKnight implements Knight{private  ResumDamselQuest quest;public DameslResuingKnight() {// RescueDamselQuest与DameslResuingKnight相耦合,骑士不能再执行其它任务// 骑士只能执行拯救落难公主,不能执行像屠杀恶龙等任务。this.qeust = new RescueDamselQuest();}public void emabrakOnQuest() {// 对这个类进行单元测试,也会变得异常麻烦,必须保证emabrakOnQuest()被调用时// 传入对象的embaek()也被调用quest.embaek();}
}

耦合具有两面性:

一方面,紧密耦合的代码难以测试、难以复用、难以理解,并且典型地表现出“打地鼠”式的bug特性(修复一个bug,将会出现一个或者更多新的bug)。

另一方面,一定程度的耦合又是必须的——完全没有耦合的代码什么也做不了。为了完成有实际意义的功能,不同的类必须以适当的方式进行交互。

总而言之,耦合是必须的,但应当被小心谨慎地管理。

通过DI,依赖的对象将由第三方组件(Spring IOC 容器)创建对象的时候提供。依赖对象无需自行创建管理,如图1.1所示,依赖对象将被自动注入到需要它们的对象当中。

图1.1 依赖注入会将所依赖的对象自动交给目标对象,而不是让对象自己去获取。

package com.Spring.Knight;public class DamselResuingKnight implements Knight{private  ResumDamselQuest quest;public DameslResuingKnight(Quest quest) {// 对象不用自己再去获取所需要的依赖,由第三方组件所提供。// 骑士也因此可以执行多种任务this.qeust = quest;}public void emabrakOnQuest() {quest.embaek();}
}

这就是DI所带来的最大收益,如果一个对象只通过接口来表明依赖关系,

那么这种依赖就能够在对象本身毫不知情的情况下,用不同的具体实现进行替换

3.基于切面和惯例进行声明式编程;
4.通过切面和模板减少样板式代码;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_231181.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

磁盘和文件系统管理(一)

检测并确认新硬盘 fdisk命令 查看或管理磁盘分区 fdisk -l [磁盘设备] 或 fdisk [磁盘设备] 交互模式中的常用指令 m、p、n、d、t、w、q d delete a partition * 删除分区 g create a new empty GPT partition table 创建一个新的空的GPT分区表(可以对大于2T磁盘进行分区) l…

如何安装Ambari集群_大数据培训

注意:以下操作主节点操作即可 1 制作本地源 制作本地源是因为在线安装Ambari太慢。制作本地源只需在主节点上进行。 1.1 配置HTTPD 服务 配置HTTPD 服务到系统层使其随系统自动启动 [roothadoop102 ~]# chkconfig httpd on [roothadoop102 ~]# service httpd …

【Opencv实战】高手勿入,Python使用Opencv+Canny实现边缘检测以及轮廓检测(详细步骤+源码分享)

前言 有温度 有深度 有广度 就等你来关注哦~ 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。 在这次的案例实战中,我们将使用Python 3和OpenCV。我们将使用OpenCV,因为它是…

私域运营对于企业的重要性

企业进行私域流量的精细化运营,不仅可以打造属于企业自己的社群王国,还可以挖掘存量客户的价值,实现更智能的客户管理和个性化运营方案。 前言 相信每个人都对瑞幸咖啡略有耳闻,这个国产咖啡品牌曾一度被封神,但随着财…

感知算法工程师面试===目标检测===YOLO V4(改)

感觉V3 到V4,YOLO的整体架构并没有重大的改进,只是增加了很多的trick 先展示一下V4的整体网络结构 ↑\uparrow↑这个是对比V3的 如图可见,V4的结构依然是主干网络金字塔头部检测器,所有的改进都是为了更好更快的检测目标。 ↑\…

(四)Spring Security Oauth2.0 源码分析--客户端端鉴权(token校验)

一 引言 在上篇文章我们分析了token的获取过程,那么拿到token后,将token放在请求头中进行资源的访问,客户端是如如何对token进行解析的呢,本文带你走进token校验的源码解析,基本流程如下所示 客户端向资源服务器发起请求时,在请求头Authorization携带申请的token请求被Filte…

均匀传输线的串扰和饱和长度

下图为串扰的电路模型,动态线与静态线之间通过互容与互感联系,这样也说明了动态线的信号耦合到静态线上的条件是存在di/dt或者dv/dt时,也就是说只在信号边沿上产生串扰,当电压或者电流为常数的时候静态线上就不会有串扰的信号。 信…

Redis04:Redis事务操作以及后续高级部分

Redis事务操作以及后续高级部分Redis事务事务执行Redis实现乐观锁Redis事务 Redis事务本质:一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程中,会按顺序执行! Redis单条命令是保证原子性的&#xff…

为什么在高速PCB设计当中信号线不能多次换孔

大家在进行PCB设计时过孔肯定是要接触的,那么大家知道过孔对于我们PCB的信号质量影响有多大吗? 在搞清楚上面这个这个问题之前我们先给大家介绍一下我们在PCB设计时过孔应该如何选取。 一般过孔种类有以下三种可以进行选择:(单位是…

Bug系列路径规划算法原理介绍(四)——I-BUG 算法

本系列文章主要对Bug类路径规划算法的原理进行介绍,在本系列的第一篇文章中按照时间顺序梳理了自1986年至2018年Bug类路径规划算法的发展,整理了13种BUG系列中的典型算法,从本系列的第二篇文章开始依次详细介绍了其中具有代表性的BUG1、BUG2、…

四种区块链底层技术形态的对比解读

新世纪以来,互联网技术快速发展,催生了以平台经济为典型的各种新业态、新模式,深刻影响和改变了人类社会的生产方式、生活方式和社会治理方式。然而在推动经济和社会发展的同时,基于数据点对点传输建立的互联网也越来越多地暴露出…

[附源码]计算机毕业设计基于springboot在线影院系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

OpenCV入门(C++/Python)- 使用OpenCV标注图像(六)

使用OpenCV标注图像用颜色线标注图像绘制圆绘制实心圆绘制矩阵绘制椭圆绘制带轮廓和填充半椭圆使用文本注释图像为图像和视频添加标注的目的不止一个,包含:向视频中添加信息在对象检测的情况下,在对象周围绘制边界框,用不同颜色的…

获取鼠标在画布中的位置

获取鼠标在画布中的位置 效果展示 概述 本文讲解如何实现我们平时用的画布软件中&#xff0c;怎么获取的我们鼠标时刻在画布中的位置。 构建HTML框架 <body><div class"box"></div> </body>CSS样式 <style>.box {/* 设置盒子…

超市商城小程序开发,在线盈利途径

随着消费意识的提高和零售业的不断升级&#xff0c;小程序已经成为目前重要的线上发展形势之一且具有很强的发展活力&#xff0c;在此发展机遇下&#xff0c;很多企业开始布局线上渠道&#xff0c;进入电商行业。超市作为日常生活中最常见、数量最多的线下门店&#xff0c;当然…

chapter7——处理字节顺序

目录1.定义2.小端模式和大端模式的比较3.处理字节顺序不匹配的问题4.访问32位存储器5.处理字节顺序不匹配6.字节顺序中性代码7.字节顺序中性编码指南1.定义 字节顺序定义数据在计算机系统中的存储格式。它描述存储器中地址的最高有效位&#xff08;MSB&#xff09;和最低有效位…

git merge origin master和git merge master的区别(个人理解)

先说结论 git merge origin master 意思是当前的分支,进行合并,合并二个分支分别是远程分支master在本地的副本和本地分支的master git merge master 当前分支于本地所处的master分支进行合并 还有就是 git merge origin master是把origin merge 到 master 上的说法是错误的…

[Cortex-M3]-4-如何在内嵌RAM中运行程序

[Cortex-M3]-1-启动流程-启动文件[Cortex-M3]-2-map文件解析[Cortex-M3]-3-分散加载文件解析&#xff08;.sct&#xff09;[Cortex-M3]-4-如何在内嵌RAM中运行程序 1 定义items 在进行项目开发时&#xff0c;可以在project items中创建debug和release,并确定。 平时调试下拉选…

22年下半年软考考后成绩查询、分数线、证书领取相关注意事项

一、软考成绩查询时间 软考考试时间分为上半年和下半年&#xff0c;上半年固定是在五月份下半年固定是在十一月份。 成绩查询时间一般在考试时间后的两个月左右根据历年来看&#xff0c; 2022年上半年软考考试时间是5月28-29日&#xff0c;成绩7月中旬左右在官网可以查询&am…

初始计算机网络——概念、组成、功能、分类

大一下学期学习计算机网络&#xff0c;但是那个时候很傻&#xff0c;不知道计算机网络的重要性&#xff0c;现在知道了只能回过头来补充知识&#xff0c;这个计算机网络真的很重要&#xff0c;也很后悔当时没有好好学 目录 一、计算机网络的概念 1.1 网络与计算机网络 1.2 计…