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

[3-02-01].第01章:框架概述 - Spring生态

SpringBoot学习大纲


一、Spring生态可以做的事情:

  • Spring 生态官网, Spring生态覆盖了:web开发、数据访问、安全控制、分布式、消息服务、移动开发、批处理、…
    在这里插入图片描述

二、部分功能介绍:

2.1.批处理(Batch Processing)

  • 1.批处理指:批量处理大量数据的任务,通常无需实时响应,而是按计划或触发条件执行(如每天凌晨处理订单对账)
  • 2.通过 Spring Batch 框架实现,提供了一套处理大规模数据任务的工具和模板
  • 3.核心功能:
    • 分块处理(Chunk Processing):将大数据分成小块处理(例如一次处理 100 条记录),避免内存溢出
    • 事务管理:确保每一步操作的事务性,失败时可回滚或重试
    • 任务调度:与 Spring Scheduler 或 Quartz 集成,定时触发任务
  • 4.典型场景:
    • 生成每日销售报表
    • 银行对账文件处理
    • 数据迁移(如从旧数据库迁移到新数据库)

2.2.事件驱动(Event-Driven)

  • 1.系统通过事件(Event) 触发行为,不同组件通过发布-订阅模式解耦,例如用户注册后发送邮件通知
  • 2.Spring 的实现:
    • 通过 Spring Events 机制(ApplicationEvent 和 ApplicationListener)或集成消息队列(如 RabbitMQ、Kafka)
  • 3.核心功能:
    • 发布-订阅模型:组件通过事件通信,降低耦合
    • 异步处理:结合 @Async 注解,提升性能
  • 4.典型场景:
    • 用户注册后发送验证邮件
    • 订单状态变更时通知其他服务
    • 微服务间的异步通信
  • 5.示例代码:
// 定义事件
public class OrderCreatedEvent extends ApplicationEvent {public OrderCreatedEvent(Order order) {super(order);}
}// 发布事件
@Service
public class OrderService {@Autowiredprivate ApplicationEventPublisher publisher;public void createOrder(Order order) {// 保存订单publisher.publishEvent(new OrderCreatedEvent(order));}
}// 监听事件
@Component
public class EmailService {@EventListenerpublic void handleOrderEvent(OrderCreatedEvent event) {// 发送邮件}
}

2.3.响应式编程(Reactive Programming)

  • 1.响应式编程:面向数据流和变化传播的编程范式,适用于高并发、低延迟的场景(如实时聊天、股票行情推送)
  • 2.Spring 的实现:通过 Spring WebFlux 和 Project Reactor 实现非阻塞、异步的响应式编程。
  • 3.核心功能:
    • 非阻塞 I/O:通过少量线程处理大量并发请求
    • 数据流处理:使用 Flux(0-N 个元素)和 Mono(0-1 个元素)处理流式数据
  • 4.典型场景:
    • 实时监控系统(如股票价格推送)
    • 高并发 API 服务(如社交网络动态加载)
    • 微服务间的异步通信(如使用 WebClient)

三、Spring5中的大升级:

3.1.内部源码设计

基于Java8的一些新特性,如:接口默认实现特性,可以重新设计源码架构

java8之前的设计方式:

  • C类和D类各需要接口A的部分方法,如果让它们直接实现A接口,就需要重写所有方法,所以在接口和类中间引入了一层适配器类,然后让C类和D类分别继承适配器,这样就可以避免重写所有方法了
    在这里插入图片描述

java8及之后的的设计方式:

  • java8开始有了默认实现,所以C和D类在实现接口A时,只需要重写需要的方法就可以,也不再需要适配器进行转换了
    在这里插入图片描述

3.2.接口默认实现举例:

a.什么是默认实现:

  • Java 8 引入的默认接口实现(Default Interface Methods)是接口中允许定义带有具体实现的方法的特性。它通过 default 关键字标记, 目的是解决接口的演化问题,允许在不破坏现有实现类的情况下扩展接口功能

b.语法形式:

public interface MyInterface {// 抽象方法(传统接口方法)void abstractMethod();// 默认方法(有具体实现)default void defaultMethod() {System.out.println("这是默认方法");}
}

c.关键特性

  • 1.默认方法可被覆盖:实现类可以直接使用默认方法,也可以选择覆盖它
public class MyClass implements MyInterface {@Overridepublic void abstractMethod() {System.out.println("实现抽象方法");}@Overridepublic void defaultMethod() {System.out.println("覆盖默认方法");}
}
  • 2.多接口冲突解决:如果一个类实现了多个接口,且这些接口有同名的默认方法,必须手动解决冲突:
public interface InterfaceA {default void foo() { System.out.println("InterfaceA"); }
}public interface InterfaceB {default void foo() { System.out.println("InterfaceB"); }
}public class MyClass implements InterfaceA, InterfaceB {// 必须覆盖 foo() 解决冲突@Overridepublic void foo() {InterfaceA.super.foo(); // 显式调用 InterfaceA 的实现}
}

http://www.xdnf.cn/news/15806.html

相关文章:

  • 基于Spring Boot的农村农产品销售系统设计与实现
  • 【Python】DRF核心组件详解:Mixin与Generic视图
  • ARINC818航空总线机载视频处理系统设计
  • 第二篇 html5和css3开发基础与应用
  • 28、鸿蒙Harmony Next开发:不依赖UI组件的全局气泡提示 (openPopup)和不依赖UI组件的全局菜单 (openMenu)、Toast
  • 数据结构入门:像整理收纳一样简单!
  • Jmeter系列(6)-测试计划
  • 李超线段树模板
  • Vue3 中使用 Element Plus 实现自定义按钮的 ElNotification 提示框
  • 「源力觉醒 创作者计划」_巅峰对话:文心 4.5 vs. DeepSeek / Qwen 3.0 深度解析(实战优化版)
  • Matlab打开慢、加载慢的解决办法
  • 构建直播平台大体的流程
  • 后端参数校验
  • Docker部署前后端分离项目——多项目共享环境部署
  • AI进入自动驾驶时代:OpenAI发布革命性ChatGPT Agent
  • 关于在VScode中使用git的一些步骤常用命令及其常见问题:
  • 从 C# 到 Python:6 天极速入门(第二天)
  • 【PTA数据结构 | C语言版】二叉堆的快速建堆操作
  • 数据结构:顺序表和链表
  • LeetCode1047删除字符串中的所有相邻重复项
  • Jenkins+Docker+Git实现自动化CI/CD
  • 谈进程间通信
  • Python 模块化编程全解析:模块、包与第三方库管理指南
  • [Raspberry Pi]如何將無頭虛擬顯示器服務(headless display)建置在樹莓派的Ubuntu桌面作業系統中?
  • SGMD辛几何模态分解 直接替换Excel运行包含频谱图相关系数图 Matlab语言!
  • 微信小程序列表数据上拉加载,下拉刷新
  • 7.事务操作
  • 手机兼容测试服务提供商对比分析:如何选择最合适的测试平台
  • 分层图最短路径算法详解
  • Spring整合MyBatis详解