SpringBoot的前世今生

1. Spring

Spring 特性:IOC、AOP、DI,

Spring:解决对象耦合的问题,在 applicationContext.xml 中申明 bean,Spring在启动时会解析xml文件进行装载,当需要用对象时直接从容器中拿取bean。

Spring万能胶:方便集成各种插件中间件。

Spring本身的这个组件是轻量级,但是配置是重量级。因为所有组件的描述、依赖都需要添加对应的xml配置。

用SpringMVC去构建一个web项目的流程:

→ 创建一个项目结构(maven/ gradle)

→ pom.xml中 添加 spring依赖,spring mvc、servlet api 等等的依赖 

→ 配置WEB-INF/web.xml, 配置 DispatcherServlet (spring mvc是在 jsp servlet 之上做的封装,所以需要配置dispatcherservlet 去拦截spring的请求) 

→ 启动一个spring mvc的配置,Dispatcher-serclet.xml 

 创建一个Controller 发布一个 http 请求 

→发布到 jsp/servelt 容器

可以看出,除了 创建一个Controller 发布一个 http 请求,其它步骤都是通用模板

2. SpringBoot

SpringBoot 产生的原因:

① Spring配置的重量级。

② 对于项目构建过程中spring需要添加太多通用性模板性的配置。

③ 微服务萌芽阶段,正好也需要这样一个轻量级的服务化架构。

到底什么是 SpringBoot?——Applications that you can just run

(可以认为 SpringBoot 是 SpringFramework 的一个脚手架,可以使用SpringBoot 快速构建一个基于 SpringFramework 的应用 )

约定大于配置,使用 SpringBoot 只需关注 → 创建一个Controller 发布一个 http 请求 步骤,其它步骤 SpringBoot 已按照默认约定自动完成。

  • 只要依赖 Spring-boot-starter-web 的 jar 包,就会自动内置一个 tomcat容器;(默认支持四种web容器:tomcat、jetty、undertow、reactor)
  • 项目结构
  • 默认提供了配置文件 application.properties. (项目中 ${key} 的引用会默认从application.properties中找key对应的value)
  • starter启动依赖-如果是一个webstarter,默认认为你是去构建一个spring mvc的应用。

SpringBoot的特性

  • EnableAutoConfiguration 自动装配
  • Starter 启动依赖 依赖于自动装配的技术
  • Actuator 监控 提供了一些endpoint,可以基于http、jmx形式去访问health、mrtrics信息...
  • SpringBoot CLI (命令行操作的功能,可以在客户端基于groovy脚本快速构建springboot应用)

(这些特性并非springboot创造的,spring也支持特性,不过SpringBoot在Spring基础上进一步做了封装)

3. Spring 注解驱动的发展过程

SpringBoot的快速发展某种程度上依赖于Spring的注解驱动。

  • spring 1.x :IOC的功能
  • spring 2.x: 引入了一些注解@Required/ @Repository/ @Aspect

                spring 2.5:@Controller、@Seivice、@Component、@RequestMapping

  • spring 3.x:里程碑版本,
    •  @Configuration 取代 xml 文件,去 xml 化。核心目的:把bean对象更加便地加载到springIOC容器中
    • @ComponentScan:扫描@Service、@Repository、@Controller
    • @Import
    • @Enable模块驱动:自动把模块相关组件的bean自动装配到IOC容器中。(如果没有这种方式,需要用@bean去装配,很难装配完全)(Enable可以自定义)

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

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

相关文章

微信小程序自行diy选择器有效果图

效果图 实现思路 主要运用到小程序自带视图容器《swiper》 运用到的属性《vertical》《display-multiple-items》《current》《animationfinish》 滑动方向变为纵向 vertical:true 显示的滑块数量 display-multiple-items:5 当前所在滑块的 index curr…

【实用教程】如何快速搭建一套私有的埋点系统?

这篇教程将基于开源项目-ClkLog,教大家快速搭建一套自有的埋点系统,从0开始完成数据采集、分析与展示,全流程掌控用户行为数据。 ClkLog是一款支持私有化部署的全开源用户行为数据采集与分析系统,兼容Web、App、小程序多端埋点&am…

falsk模型-flask_sqlalchemy增删改查

1、增、删、改 增 home_bp.route(/useradd) def user_add():users []for i in range(10,20):user User()user.name 冰冰 str(i)user.age 20iusers.append(user)try:db.session.add_all(users)db.session.commit()return jsonify({code:1,info:success})except Exception…

【专题】机器学习期末复习资料

机器学习期末复习资料(题库) 链接:https://blog.csdn.net/Pqf18064375973/article/details/148105494?sharetypeblogdetail&sharerId148105494&sharereferPC&sharesourcePqf18064375973&sharefrommp_from_link 【测试】 Art…

SpringCloud Alibaba微服务-- Sentinel的使用(笔记)

雪崩问题: 小问题引发大问题,小服务出现故障,处理不当,可能导致整个微服务宕机。 假如商品服务出故障,购物车调用该服务,则可能出现处理时间过长,如果一秒几十个请求,那么处理时间过…

5:OpenCV—图像亮度、对比度变换

1.更改图像和视频的亮度 更改亮度 更改图像的亮度是常用的点操作。在此操作中,图像中每个像素的值应增加/减少一个常数。要更改视频的亮度,应对视频中的每一帧执行相同的操作。 如果要增加图像的亮度,则必须为图像中的每个像素添加一些正常…

【工作流】Fastgpt配置豆包模型-火山引擎

V4.9.7 Fastgpt现在不通过oneapi 来配置模型和渠道了, 可以直接在页面进行设置 首先在账号- 模型提供商里面 填入豆包的信息: 渠道名随便填,厂商选豆包, 然后选3个模型,如图所示 如果没有填入模型映射的话是没办法 …

2025年系统架构师---综合知识卷

1.进程是一个具有独立功能的程序关于某数据集合的一次运行活动,是系统进行资源分配和调度的基本单位(线程包含于进程之中,可并发,是系统进行运算调度的最小单位)。一个进程是通过其物理实体被感知的,进程的物理实体又称为进程的静态描述,通常由三部分组成,分别是程序、…

LangChain4j入门AI(六)整合提示词(Prompt)

前言 提示词(Prompt)是用户输入给AI模型的一段文字或指令,用于引导模型生成特定类型的内容。通过提示词,用户可以告诉AI“做什么”、 “如何做”以及“输出格式”,从而在满足需求的同时最大程度减少无关信息的生成。有…

如何使用 Docker Compose 部署 Immich

如何使用 Docker Compose 部署 Immich Immich 是一个开源的自建照片和视频备份解决方案,通过 Docker 部署可以快速构建一个稳定的自主管理系统。本文将带你一步步完成使用 Docker Compose 部署 Immich 的过程,帮助你在生产环境中实现高效的媒体管理。 1…

Mac远程连接Windows电脑教程

在 Mac 上通过微软官方远程桌面工具(Windows App)连接局域网内的 Windows 电脑,需按照以下步骤操作: 一、准备工作 确认 Windows 版本支持远程连接 Windows 专业版/企业版/教育版 支持远程桌面功能。家庭版不支持,需使…

从0到1打造AI Copilot:用SpringBoot + ChatGPT API实现智能开发助手

本文将从0到1系统性地讲解如何基于SpringBoot与OpenAI ChatGPT API打造一款智能开发助手(AI Copilot)。文章首先介绍AI Copilot的背景与价值,接着深入架构设计与环境准备,然后通过详尽的代码示例演示SpringBoot项目的搭建、依赖配…

Crawl4AI:高效的AI数据抓取工具

在大数据时代,抓取并处理大量数据是进行人工智能(AI)研究与开发的基础。而网络爬虫是获取网页数据的重要工具。今天,我想介绍一个功能强大的爬虫框架——Crawl4AI,它为数据抓取和机器学习任务提供了无缝的支持。Crawl4…

从单链表 list 中删除第 i 个元素--Python

从单链表 list 中删除第 i 个元素 一、问题引入二、解题步骤1.思维导图2.解题步骤 三、代码实现四、个人总结 一、问题引入 请编写程序,将 n 个整数顺次插入一个初始为空的单链表的表头。随后对任意给定的位序 i,删除链表中第 i 个结点。注意&#xff1…

git学习与使用(远程仓库、分支、工作流)

文章目录 前言简介git的工作流程git的安装配置git环境:git config --globalgit的基本使用新建目录初始化仓库(repository)添加到暂存区新增/修改/删除 文件状态会改变 提交到仓库查看提交(commit)的历史记录git其他命令…

九、日志分析和系统故障排查

目录 1、日志分析1.1、日志介绍1.1.1、日志的功能1.1.2、日志文件的分类1.1.3、日志保存位置1.2、rsyslog服务1.2.1、发送日志到远程日志服务器1.3、查看日志文件1.3.1、/var/log/messages文件的内容示例1.3.2、用户登录、退出系统的相关日志1.4、日志级别1.5、程序日志分析1.6…

C++ 非类成员变量 非类成员函数 全局变量 使用

1 使用特点 加 :: 变量使用 #include <iostream> using namespace std; int qwer 100; int asdf 900; void sitl(){std::cout <<"globe dog is sitting." << std::endl; }class Cat { public:static int num;}; int Cat::num 99;class Dog { …

【小乌龙问题】stm32供电,用过的ch340缺无法被识别

解决&#xff1a;更换正确供电&#xff08;stlink&#xff09;&#xff0c;不能用usb-ttl的仅供电&#xff0c;会干扰的&#xff01;&#xff01;&#xff01;&#xff01; 原来用stlink供电&#xff0c;今天没拿就想着usb-ttl的电源供电&#xff0c;然后用ch340传输数据&…

使用 Navicat 17 for PostgreSQL 时,请问哪个版本支持 PostgreSQL 的 20150623 版本?还是每个版本都支持?

&#x1f9d1;‍&#x1f4bb; PostgreSQL 用户 使用 Navicat 17 for PostgreSQL 时&#xff0c;请问哪个版本支持 PostgreSQL 的 20150623 版本&#xff1f;还是每个版本都支持&#xff1f; &#x1f9d1;‍&#x1f527; 官方技术中心 Navicat Premium 17 和 Navicat for P…

游戏引擎学习第305天:在平台层中使用内存 Arena 的方法与思路

回顾前一天内容&#xff0c;并为今天的开发工作设定方向 我们正在直播制作完整游戏&#xff0c;当前正在实现一个精灵图&#xff08;sprite graph&#xff09;的排序系统。排序的代码已经写完&#xff0c;过程并不复杂&#xff0c;虽然还没做太多优化&#xff0c;但总体思路比…