Spring,SpringMVC,SpringBoot

article/2025/7/6 13:22:57
        1.Spring最核心包括aop和ioc概念
                AOP

                        能够将将哪些于业务无关的,并且大量重复的业务逻辑进行封装起来,便于减少重复代码,降低模块之间的耦合度,给未来的系统更好的可用性和可维护性。

                Spring中AOP是采用动态代理,JDK代理只能代理实现接口的类,无法使用,所以通过CGLIB动态代理生成一个被代理对象的子类作为代理实现。

                IOC

                       将由程序手动创建的对象的控制权,交给IOC进行管理,并且有IOC来进行完成对象的注入,这样可以很大程度上简化应用的开发过程,将应用从复杂的依赖关系解放出来。IOC容器就想一个工厂一样,我们需要创建一个对象的时候,通过配置文件配置即可,完全不用去管对象是如何创建出来的。

                Spring的IOC的对象创建原理是通过工厂模式+反射机制。

                Spring框架中使用代哪些设计模式?

                  1.单例模式:例如Spring的bean是单例的。

                  2.代理模式:Spring中AOP模式。

                  3.工厂模式:IOC生成bean对象过程。

                  4.模板方法模式:spring的jdbcTemplat操作数据的

                  5.适配器模式;spring AOP的增强和通知使用。

        2.SpringMVC的流程

                流程过程

                       主要是客户端将请求发给spring MVC中dispatcherServlet类,通过它去寻找handler然后找到对应controller层进行执行业务代码,然后返回modelandview层。然后通过ViewReslver寻找实际的view层,然后将返回model层传给view进行渲染,返回给浏览器展示。

        3.SpringBoot
                特点

                1)自动配置:项目依赖自动配置spring组件。

                2)起步依赖:提供定义好的依赖组件,并且支持第三方集成。

                3)内嵌服务器:默认集成Tomcat,jetty服务,支持通过application.yml进行配置

                4)注解驱动于xml进行配置

                5)生产就绪功能:autuator模块提供端点监控应用服务;外部化配置,支持多环境配置,通过@profile注解。

                常用注解

                1)@SpringBootConfiguration:组合@configuration.实现配置文件的功能。

                2)@EnableAutoConfiguration:开启自动配置功能,也可以自动关闭自动配置功能。

                3)@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})。

                4)@ComponentScan:spring组件扫描。

                5)@profile: 是在特定环境下使用(dev,test,pro)

                6)@Bean: 使用在方法,对方法中定义这bean,告诉spring这某个类的事例,我需要的时候spring返回给我。

                7)@RequestParam: 获取URL中查询参数。

                     @PathVariable: 获取URL中的变量

                     @RequestBaby: 获取对象变量。

                8)@RequestMapping:映射到HTTP请求到控制器方法,控制路径。

                9)@Autowired:  进行依赖注入Bean,默认按照类型注入。

                      @Resource:  进行依赖注入Bean,默认按照名称注入。

                10)RestController: 组合@Controller和@ResponseBaby,主要定义RESTFUL API,返回JSON数据。                        

                11)@Component:是主要在类上使用,是通过扫描类路径进行自动检测已经自动装配代spring容器中,如果一个Bean不知道是哪一个层,可以使用这个注解。       

                12)@Repository:对应使用在dao层,主要是用于数据库相关操作。

                13)@Service:对应服务层,主要是涉及一些复杂的业务逻辑,需要用到Dao层。

                14)@Controller:对应Spring Mvc的控制层,主要是用接受用户的请求并且调用service层的方法返回给前端页面。

                


http://www.hkcw.cn/article/tKiHrUpLPk.shtml

相关文章

浏览器的渲染原理

浏览器的渲染原理 掘金 整个过程 网络 网络线程: 收到html,css,js 文件资源. 产生一个渲染任务,并将其传递给渲染主线程的消息队列. 渲染 在事件循环机制下, 渲染主线程取出消息队列中的渲染任务,开启渲染流程. 整个过程 渲染主线程 完成 绘制之前的所有工作合成线程和…

【30万像素实时调控!石墨烯“魔镜”突破毫米波极限】

12厘米见方的超表面,藏着30万个比头发丝还细的像素单元,正在无声地操控着无形的太赫兹波束。曼彻斯特大学的科学家们将石墨烯的非凡电学特性与现代显示技术巧妙融合,创造出世界上最大规模的可编程智能超表面。想象一下,只需轻轻点…

线性调频波形测距测速信号处理——全代码+注释

clear all close all clc %% 参数设置 fs600e6;%采样率 fc10.45e9;% 波形发射载频 t10e-6;%脉宽 f050e6;%波形中频频率 B10e6;%带宽 uB/(2*t);%调频斜率 Tv100e-6;% 脉冲重复周期 Num64;% 测速脉冲数 lamdfs/B;% 抽取带宽 Nsround(fs*t); NTvround(fs*Tv); tt0:1/fs:t-1/fs; ff…

Spine工具入门教程2之导入

1、导入定义 从原画转化为Spine的环节。 (1)选择路径,拖动图片导入方式 缺点:定位不准 【使用批量导出的方式】 在PS工具中,选择所有图层后右键选择导出。 在Spine工具中,选择路径导入图片。 然后再拖…

吴恩达MCP课程(1):chat_bot

原课程代码是用Anthropic写的,下面代码是用OpenAI改写的,模型则用阿里巴巴的模型做测试 .env 文件为: OPENAI_API_KEYsk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx OPENAI_API_BASEhttps://dashscope.aliyuncs.com/compatible-mode…

Z-AnyLabeling1.0.1

1.前段时间写了第一个版本的Z-AnyLabeling,使用起来只能标注一个文件夹里面的图片,不能标注多个文件夹数据 2.现在更新一个版本可以标注多个文件夹数据,同时可以保存成一个工程文件。 3.软件开发环境:Pycharm,Pyside6 4.软件界面 …

告别充电焦虑:移动充电桩如何优化传统充电模式?

新能源汽车的普及,充电难、充电慢的问题日益凸显。传统固定充电桩受限于场地和电网,难以满足用户灵活、高效的充电需求。而移动充电桩的出现,正逐步改变这一局面。它以其灵活部署、智能调度和高效补能的优势,为缓解充电焦虑提供了…

github访问慢

解决github外玩访问慢 ,点击解决方案

榕壹云医疗服务系统:基于ThinkPHP+MySQL+UniApp的多门店医疗预约小程序解决方案

在数字化浪潮下,传统医疗服务行业正面临效率提升与客户体验优化的双重挑战。针对口腔、美容、诊所、中医馆、专科医院及康复护理等需要预约或诊断服务的行业,我们开发了一款基于ThinkPHP+MySQL+UniApp的多门店服务预约小程序——榕壹云医疗服务系统。该系统通过模块化设计与开…

RPA如何支持跨平台和跨浏览器的自动化

RPA,即机器人流程自动化(Robotic Process Automation),正日益成为企业实现业务流程高效自动化的关键技术。在复杂的数字化环境中,跨平台和跨浏览器的自动化需求极为迫切,RPA 通过多种技术手段和策略来满足这…

SpringBoot简单体验(TODO)

1 Helloworld 打开:https://start.spring.io/ 选择maven配置。增加SpringWeb的依赖。 Generate之后解压,代码大致如下: hpDESKTOP-430500P:~/springboot2/demo$ tree ├── HELP.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── s…

事件驱动架构入门

主要参考资料: 软件架构-事件驱动架构: https://blog.csdn.net/liuxinghao/article/details/113923639 目录 简介事件队列事件日志事件收集器响应队列读事件 vs. 写事件 简介 事件驱动架构是一种系统或组件之间通过发送事件和响应事件彼此交互的架构风格。当某个事…

2024全国青少年信息素养大赛python复赛真题——计算握手次数

2024全国青少年信息素养大赛python复赛真题——计算握手次数 题目可点下面去处,支持在线编程,在线测评~ 计算握手次数(2024全国青少年信息素养大赛复赛真题)_python_少儿编程题库学习中心-嗨信奥 题库收集了历届各白名…

[春秋云镜] CVE-2023-23752 writeup

首先奉上大佬的wp表示尊敬:(很详细)[ 漏洞复现篇 ] Joomla未授权访问Rest API漏洞(CVE-2023-23752)_joomla未授权访问漏洞(cve-2023-23752)-CSDN博客 知识点 Joomla版本为4.0.0 到 4.2.7 存在未授权访问漏洞 Joomla是一套全球知名的内容管理…

Trae Builder编程助手-基于Builder完成算法生成+api接口实现全流程

Trae插件下载链接 ​ 总结 使用过Builder后,我的感觉就是,可以通过嘴写代码!!雄起吧,我们程序员的口语交际能力。同时重点要先把自己的编码环境设置好,否则很麻烦 参考 安装过程单击Trae插件下载链接&…

python笔面试题汇总

1. 如何利用SciKit包训练一个简单的线性回归模型 利用linear_model.LinearRegression()函数 # Create linear regression object regr linear_model.LinearRegression() # Train the model using the training sets regr.fit(data_X_train, data_y_train) 2. 例举几个常用的…

pandas数据分析

数据读取 import pandas as pd df pd.read_csv(D:\my_app\python\python project\data\sample_data.csv) print(df)数据保存 import pandas as pd# 创建示例数据 data {Name: [Alice, Bob, Charlie, David, Eve],Age: [25, 30, 35, 28, 22],City: [Beijing, Shanghai, Guan…

力扣每日一题——找到离给定两个节点最近的节点

目录 题目链接:2359. 找到离给定两个节点最近的节点 - 力扣(LeetCode) 题目描述 解法一:双指针路径交汇法​ 基本思路 关键步骤 为什么这样可行呢我请问了? 举个例子 特殊情况 Java写法: C写法&a…

一种通用图片红色印章去除的工具设计

朋友今天下午需要处理个事情,问我有没有什么好的办法能够去除,核心问题是要去除图片上的印章。记得以前处理过类似的需求,photoshop操作比较简单,本质是做运算。这种处理方式有很多,比如现在流行的大模型,一…

Bean对象循环依赖

Spring 循环依赖是指 多个 Bean 对象之间形成相互依赖的闭环。 三级缓存解决循环依赖 缓存级别存储内容作用一级缓存完整的 Bean(singletonObjects)存放已初始化完成的 Bean二级缓存半成品 Bean(earlySingletonObjects)存放已实例…