Spring 概述

news2024/11/25 7:04:47

Spring是 Java 应用程序开发框架。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO编程模型来促进良好的编程实践。

Spring Framework

Spring 基础框架是 Spring Framework ,基本上任何其他 Spring 项目都是以 Spring Framework 为基础的。

特点:

  • 非侵入式:使用 Spring Framework 开发应用程序时,**Spring 完全不会破坏原有结构,反而能将组件结构进一步简化。**这就使得基于 Spring Framework 开发应用程序时结构清晰、简洁优雅。
  • 控制反转IOC翻转资源获取方向。原本需要开发者自行获取资源,现在变为由容器主动的将资源推送给需要的组件,提高了开发的效率。
  • 面向切面编程AOP在不修改源代码的基础上增强代码功能。
  • 容器:Spring IOC 是一个容器,因为它包含并且管理组件对象的生命周期。组件享受到了容器化的管理,提高了开发效率。
  • 组件化:Spring 实现了使用简单的组件配置组合成一个复杂的应用。**在 Spring 中可以使用XML和 Java 注解组合这些对象。**这使得系统搭建更加简便。
  • 声明式:很多以前需要编写代码才能实现的功能,现在只需要声明需求即可由框架代为实现。

Spring Framework五大功能模块:

在这里插入图片描述

IOC

IOC:Inversion of Control,反转控制。

在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需要的资源,在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式,同时降低了开发效率。
反转控制的思想颠覆了应用程序组件获取资源的传统方式:反转了资源的获取方向——改由容器主动的将资源推送给需要的组件,开发人员不需要知道容器是如何创建资源对象的,只需要提供接收资源的方式即可,极大的降低了学习成本,提高了开发的效率。这种行为也称为查找的被动形式。

IOC的具体实现形式是依赖注入(DI:Dependency Injection) DI 是 IOC
的另一种表述方式:即组件以一些预先定义好的方式(例如:setter 方法)接受来自于容器的资源注入。相对于IOC而言,这种表述更直接。
所以:IOC 是一种反转控制的思想, 而 DI 是对 IOC 的一种具体实现。

IOC的实现方式有两种:
1.基于xml管理bean
2.基于注解管理bean

AOP

AOP:Aspect Oriented Programming,面向切面编程
它是面向对象编程(OOP)的一种补充和完善,它以通过预编译方式运行期动态代理方式实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术。

AOP的实现方式有两种:
1.基于注解的AOP
2.基于xml的AOP

术语:

  • 横切关注点:
    从每个方法中抽取出来的同一类非核心业务。在同一个项目中,我们可以使用多个横切关注点对相关方法进行多个不同方面的增强。
    这个概念不是语法层面天然存在的,而是根据附加功能的逻辑上的需要:有十个附加功能,就有十个横切关注点。
  • 通知
    每一个横切关注点上要做的事情都需要写一个方法来实现,这样的方法就叫通知方法。
    前置通知:在被代理的目标方法前执行
    返回通知:在被代理的目标方法成功结束后执行
    异常通知:在被代理的目标方法异常结束后执行
    后置通知:在被代理的目标方法最终结束后执行
    环绕通知:使用try…catch…finally结构围绕整个被代理的目标方法,包括上面四种通知对应的所
    有位置
  • 切面:
    封装通知方法的类(封装横切关注点的类)。
  • 目标:
    被代理的目标对象
  • 代理:
    向目标对象应用通知后创建的代理对象
  • 连接点:
    每一个横切位置都是连接点
  • 切入点:
    定位连接点的方式。
    每个类的方法中都包含多个连接点,所以连接点是类中客观存在的事物(从逻辑上来说)。
    如果把连接点看作数据库中的记录,那么切入点就是查询记录的 SQL 语句。
    Spring 的 AOP 技术可以通过切入点定位到特定的连接点。
    切点通过 org.springframework.aop.Pointcut 接口进行描述,它使用类和方法作为连接点的查询条件。

AOP作用

AOP主要做的是:
抽横切关注点,封装到切面中,此时是一个通知,再通过切入点定位到连接点。即在不改变代码的前提下,把切面中的通知,通过切入点表达式连接到连接点上,实现功能的增强。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何进入 mysql?

目录 1. win r 2. 输入cmd点确定 3. 输入 mysql -u -t 4. 点回车出现 下面的 就代表已经进入 mysql 退出 mysql的 方法: 1. win r 2. 输入cmd点确定 3. 输入 mysql -u -t -u :代表你的用户名,如果是本地登录 则为 -uroot-p &am…

学习python第7天

Python绘制图形库turtle 1.介绍: turtle库根据一组函数指令的控制,在平面坐标系中移动,从 而它爬行的路径上绘制图形。 2.原理:turtle(海龟)由程序控制在画布上游走,走过的轨迹形成绘 制的图形&#xff0c…

子不语IPO下限定价:预计2022年全年净利润下滑,华丙如为实控人

11月10日,子不语集团有限公司(HK:02420,下称“子不语”)在港交所公布发售结果。公告显示,子不语在香港公开发售及国际配售(不含基石部分)阶段均获得超额认购,将于2022年11月11日在港…

【前端】Vue+Element UI案例:通用后台管理系统-登陆页面Login

文章目录目标代码0.路由1.结构2.校验规则3.样式总代码Login.vue效果本篇很短,因为只有一个页面。没有功能。 目标 登陆页面,路由为/login有表单验证 代码 0.路由 在router的index.js文件中的routes中添加对象: {path:/login,component:L…

SpringBoot+Mybatis+CRUD项目

一、项目要求 创建一个 SpringBoot 项目,项目名”week11_学号”;使用 Mybatis 框架,也可以时可用 MybatisPlus 框架;访问 myschool 数据库;对 student 表进行操作,向 student 插入自己的一条记录&#xff…

Linux学习-29-用户组信息相关命令

8.17 Linux groupadd命令:添加用户组 添加用户组的命令是 groupadd,命令格式如下: [rootCncLucZK ~]# groupadd [选项] 组名选项: -g GID:指定组 ID;-r:创建系统群组。-o 一般与-g选项同时使用&#xff0…

C++ opencv 图像色彩空间转换--色域捕获

1.API和相关知识 1.inRange 在opencv中,我们提取指定色彩范围的区域,采用inRange实现,这样的一块区域,学名叫做ROI(region of interest),感兴趣区域。 关于inRange的提取原理 图像中&#xff0…

这是一篇用python画3D爱心的代码

浅浅写一个最近很火的爱心代码 最近你是否也被李峋的爱心跳动代码所感动,心动不如行动,相同的代码很多,我们今天换一个玩法!构建一个三维的跳动爱心!嗯!这篇博客本着开源的思想!不是说谁对浪漫…

开放服务担心安全?vx-api-gateway值得一用

下载地址:VX-API-Gateway帮助文档 下载解压打开后 Windows 下vx-api-gateway启动 bin目录下start.bat文件 启动后访问http://localhost:5256/ VX-API客户端用于查看VX-API运行的基本信息,管理应用与API及黑名单,打开客户端的方式,在浏览器中请求http://地址:端口…

被生活、房贷车贷压得喘不过气的35岁测试工程师,拿什么来谈追求~

高龄测试员现状 我有位在深圳工作的测试员朋友分享了他的工作经历,他今年35岁,前不久被公司辞退,面对家庭,房贷,车贷的压力,让他的生活都是一片灰,离职后最让测试员感到痛心是在面试多家公司以…

Android Studio App开发之广播组件Broadcast的讲解及实战(包括收发标准、有序、静态广播实现手机震动功能 附源码)

一、收发标准广播 Android的广播机制正式借鉴了Wifi的通信原理,不必搭建专门的通路,就能在发送方与接收方之间建立连接,同时广播也是Android的四大组件之一,它用于Android各组件之间的灵活通信,与活动的区别在于以下几…

荧光素标记大鼠甲状腺滤泡上皮细胞FRTL-5,荧光素FITC标记的FRTL-5细胞,FITC-FRTL-5

产品名称:荧光素标记大鼠甲状腺滤泡上皮细胞FRTL-5,荧光素FITC标记的FRTL-5细胞 英文名称:FITC-FRTL-5 在F-12培养基中加入5%小牛血清、10mU/ml TSH、10g/ml胰岛素、5g/ml转铁蛋白、10ng/ml生长抑素、0.4ng/ml氢化可的松、10ng/…

JAVA虚拟机的性能监控

一、JDK的命令行工具 命令一:jps(虚拟机进程状况工具) jps -q //只输出LVMID,省略主类的名称(LVMID:虚拟机实例运行时候的进程号) jps -m //输出虚拟机进程启动的时传递给主类main()函数的参…

笔记本电脑数据怎么恢复?笔记本电脑数据恢复用什么工具?

随着互联网时代的发展,电脑的应用越来越广泛,已经深深融入了我们的工作乃至生活当中。其中,笔记本作为可随身携带的电脑设备,其灵活、轻便等优势一直深受大家喜爱。在日常使用过程中,我们会往笔记本里存储各式各样的数…

Springboot快速开发-书本信息管理系统(项目源码)

【我后续会发一个资源包,里面是所有代码,数据库表设计也有,大学生可以直接用,导入数据库运行,再导入后端项目和前端项目,再去网页运行就好了,效果图下面有】 1、考核要求: 数据库&am…

笔试强训第22天--(第一个只出现一次的字符 小易的升级之路)

选择 B 从头找和从尾找不都得遍历嘛 B 错了建议给自己来个大嘴巴子 C 老演员了 A 一个从头来,一个从尾来,这样才能全满嘛 A 从1开始存的 但是依然是头指针等于尾指针的时候是空,但是你不留一个空间不存数据,那满的时候也是头指针等…

HAWE油缸_哈威油缸

HAWE油缸_哈威油缸宁波秉圣主要做的型号:HSE24-20,HSE16-8,HSE12-8,HSA32-20,HSE16-16,SHA32-20,SHA40-25等。 HAWE防爆阀宁波秉圣常作的型号:EXGZ4-12-GM24,NSWP2D/M/20-G24EX,VP1Z-G24EX,NBVP16R/2-G24EX,PSL41/160-3-E1-G24EX-3m,PSV4S2/2…

期末前端web大作业——名侦探柯南网页制作 Hbuiderx制作网页 静态HTML网页单页制作 dreamweaver网页设计与制作代码 web前端期末大作业

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

32岁事业无成,我终于选择放过自己了

作为一名热爱编程的程序员,我一直在思考,既然我热爱这份职业,如果我能在工作中获得人生意义,岂不是两全其美。于是,我去看了一本书《发现你的天赋》。很多人评价,照着上面的引导认真做题,不仅能…

springboot2.X整合mybatis使用joda时间格式变量完成插入操作

开发工具使用的idea2022.3&#xff0c;数据库是mysql5.X系列&#xff0c;springboot用的是2.7系列&#xff0c;使用了java8的joda类型的时间格式完成mybatis的插入操作。下面贴代码说明实现过程 项目结构如下图&#xff1a; 下面说一些关键的maven配置 <!-- springboot myb…