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

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可以自定义)

相关文章:

  • 学习STC51单片机11(芯片为STC89C52RC)
  • 使用VLOOKUP查询两个表格,使用数字格式进行查询,如果返回NA错误,则使用文本格式进行查询
  • 实战:Dify智能体+Java=自动化运营工具!
  • 1 研发规划
  • java基础(方法)
  • Spring Boot——自动配置
  • PL/Python数据库: PostgreSQL Python扩展
  • 2025最新版Visual Studio Code for Mac安装使用指南
  • 代码走读 Go 语言 Map 的实现
  • PyInstaller入门
  • 阿里云服务器 篇十三(加更):Web书签(链接共享和迷你导航):改为使用宿主机DB等优化
  • 第八天 搭建车辆状态监控平台(Docker+Kubernetes) OTA升级服务开发(差分升级、回滚机制)
  • 训练一个线性模型
  • halcon 三维点直线拟合
  • 角度回归——八参数检测四边形RSDet
  • 单例模式的运用
  • Spring Boot与Kafka集成实践:实现高效消息队列
  • 角度回归——八参数检测四边形Gliding Vertex
  • 微服务中的 AKF 拆分原则:构建可扩展系统的核心方法论
  • 鸿蒙Flutter实战:25-混合开发详解-5-跳转Flutter页面
  • 个人网页设计作品纯html/seo培训
  • 免费综合网站注册申请/seo推广技术
  • 长沙零基础学快速建站/网络营销策划推广方案
  • 免费自助网站/搭建网站流程
  • 营销做网站公司/软文营销的概念
  • 上海市嘉定建设局网站/信息流广告投放渠道