阿里p8架构师耗时一年整理SpringBoot,从构建小系统到架构大系统

2023-10-31

Java 的各种开发框架发展了很多年,影响了一代又一代的程序员,现在无论是程序员,还是架构师,使用这些开发框架都面临着两方面的挑战。

  1. 一方面是要快速开发出系统,这就要求使用的开发框架尽量简单,无论是新手还是老手都能快速上手,快速掌握页面渲染、数据库访问等常用技术。也要求开发框架能尽量多地集成第 方工具,以便信手拈来。最后,还希望在开发调试过程中,方便代码更改后能快速重启。

  2. 另外一方面,当系统模块增加,用户使用量增加时,面对这样的挑战,系统拆分成为新的架构,程序员和架构师当然不希望换掉己有的开发框架,希望能由小而美的系统过渡到大而强的分布式系统。

环顾当前 Java 开源世界中的流行技术框架,能同时胜任这项工作的微乎其微, Play和ActFramework 是不错的选择,国内的 Nutz JFinal 的口碑也不错。但能同时满足快速开发和分布式系统架构的框架,还是群众基础最好、功能最全、基于 Spring 技术的 Spring Boot 框架

限于文章篇幅原因,只能以截图的形式展示出来,有需要的小伙伴可以文末获取↓↓↓

Java EE简介

Java EE,指出其缺点,引入了流行的 Spring ,同时也说明 Spring经过这么多年发展后暴露的一些缺点,从而引出 Sprin Boot ,井以两个简要例子作为说明

Spring Boot 基础

Spring Boot 应用的开发环境做了说明,包括 Java 开发环境的安装和配置, Maven的安装和配置,设置国内仓库镜像,还有常用的Maven命令。本章最后介绍 Spring历史以及现有开发团队,并介绍Spring 框架的 AOP Iro 两个核心技术

MVC框架

介绍MV技术,前半部分重点介绍 URL 映射到 Controller ,以及映射到 Controller方法的参数、参数类型转化、参数验证。后半部分简单介绍 MVC 中的视图技术 Freemaker Beet! 以及 Ja on 序列化技术。 Beet! Jackson将在第 章详细介绍。

视图技术

开源技术 Beeti 后端模板引擎,作为国内流行的模板引擎之 ,具有简单易学、功能性能强大、支持MVC 分离开发等特点。另外一部分详细介绍 Jackson JSON序列化技术。 Jackson 不仅作为 SpringMVC 中的 JSON 默认工具,也是 Spring Boot 分布式技术中常采用的 JSON 序列 技术。

数据库访问

以 SQL 为中心的数据库访问工具 Beet!SQL ,这是另外一款流行 Dao工具, SQL在markdown文件中管理,内置增删改查、轻量级 ORM 功能、代码生成、主从支持、跨多种数据库等特点,适合那些更喜欢以 SQL 方式访问数据库的开发者。

Spring Data JPA

以面向对象为中心的数据库访问工具 Spring Data JPA 本章由易到难,先从Spring Data 提供的功能入手,介绍如何完成数据库简单的增删改查功能,然后引入 JPA 来解决应用中不可避免 复杂 SQL 查询。

Spring Boot 配置

Spring Boot 高级特性 如常用的 Sprin Boot 的配置、日志配置、应用配置的读取、 Sprin Boot 自动装配技术和 Sprin Boot Starter实现。

部署Spring Boot应用

如何部署 Spring Boot 应用,包括可执行 jar ,以及通过 war 部署到应用服务器上 应用经常面对多个环境,如开发、测试,还有准线上、线上,以及多个Demo 环境, SpringBoot 提供 Profile 来实现多环境部署。

Testing单元测试

单元测试概念 以及 Spring Boot 下的单元测试支持,包括 MVC 单元测试、Mock 测试,以及面向数据库应用的测试方案

REST

RESTful 风格的架构,然后介绍 Spring Boot 如何集成以提供 REST 服务,使用 RestTemplate 调用 REST 服务 本章最后也重点介绍了 Swagger 3.0 技术,以方便 REST接口的交流、开发和测试。

MongoDB

MongoDB 的安装和使用 然后介绍Spring Boot 如何集成 MongoDB, 同时还介绍了如何用 Mongo Template 访问MongoDB

Redis

介绍 Redis 服务器的安装和使用, Redis 常用的数据结构和操作命令。然后介绍 SpringBoot 如何集成 Redis ,如何使用 RedisTemplate 来操作 Redis 。本章后半部分深入介绍了 RedisTemplate提供的序列化机制。

Elasticsearch

Elasticsearch 的安装和使用, Elasticsearch 既具有全文搜索功能,也能像MongoDB 那样,具备NoSQL 的功能。本章介绍通过REST Spring Data 两种方式访问 Elasticsearch

Cache

Spring Boot Cache ,并重点介绍 Redis作为分布式缓存的实现。在此基础上,改进了 Redis分布式缓存,通过较少的代码实现了一个具备一二 级缓存的技术方案

Spring Session

Spring Boot 应用水平扩展,需实现无会话状态技术, Spring Session 提供了分布式会话管理,本章介绍了 Nginx 作为反向代理的内容,以及 Spring Session Redis 实现及其源码分析。

Spring Boot 和 ZooKeeper

Spring Boot 应用水平扩展技术必然带来分布式协调要求, ZooKeeper是一个广泛使用的分布式协调器。本章介绍 ZooKeeper 的安装和使用,对领导选取、分布式锁和服务注册三个常用功能做了重点描述,并在 Spring Boot 应用中采用 Curator 来完成这 三个功能。

监控Spring Boot应用

Spring Boot 提供了内置监控功能,使得用户通过 HTTP 请求就能知晓服务器的健康状态,如数据源是否可用、 NoSQL 服务是否可用、最近的 HTTP 访问的内容等监控信息。本章讲述了线程械、内存、在线日志、 HTTP 访问、 RequestMapping 等常用监控功能。其中还讲述通过 dump 线程技和内存来解决 Spring Boot 应用中的一些性能故障。

限于文章篇幅原因,就展示到这里了,有需要的小伙伴可以查看下方名片↓↓↓ 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阿里p8架构师耗时一年整理SpringBoot,从构建小系统到架构大系统 的相关文章

  • Java 7 默认语言环境

    我刚刚安装了 jre7 我很惊讶地发现我的默认区域设置现在是 en US 对于jre6 它是de CH 与jre7有什么不同 默认区域设置不再是操作系统之一吗 顺便说一句 我使用的是Windows7 谢谢你的回答 编辑 我已经看到了语言环境
  • Android 中的列表(特别是 RecyclerView 和 CardView)如何工作

    请原谅我问这个问题 但我是 Android 开发新手 尽管我正在尝试了解developer android com 网站上的基础知识 但大多数示例 即使他们说它们是为 Android Studio 构建的 尚未设置为使用 Gradle 因此
  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • 当路径的点超出视野时,Android Canvas 不会绘制路径

    我在绘制路径时遇到了 Android Canvas 的一些问题 我的情况是 我有一个相对布局工作 如地图视图 不使用 google api 或类似的东西 我必须在该视图上绘制一条路径 canvas drawPath polyPath bor
  • Android 中 localTime 和 localDate 的替代类有哪些? [复制]

    这个问题在这里已经有答案了 我想使用从 android API 获得的长值 该值将日期返回为长值 表示为自纪元以来的毫秒数 我需要使用像 isBefore plusDays isAfter 这样的方法 Cursor managedCurso
  • tomcat 7.0.50 java websocket 实现给出 404 错误

    我正在尝试使用 Java Websocket API 1 0 JSR 356 中指定的带注释端点在 tomcat 7 0 50 上实现 websocket 以下是我如何对其进行编码的简要步骤 1 使用 ServerEndpoint注解编写w
  • FileNotFoundException - Struts2 文件上传

    Strange FileNotFoundException使用Struts2上传文件时 这是 JSP 的一部分
  • 如何在java Spring Boot中实现通用服务类?

    我有许多具有重复代码的服务 我想知道如何实现通用服务 以便我的所有服务都可以扩展它 服务接口示例 重复代码 Service public interface IUserService List
  • Spring数据中的本机查询连接

    我有课 Entity public class User Id Long id String name ManyToMany List
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • Java中的断点和逐步调试?

    抱歉我的问题名称很奇怪 我不知道如何寻找这个 因为我不知道这些东西是如何称呼的 Visual Studio 中至少有一个功能 您可以单击代码左侧并设置一个大红点的起点 然后运行程序 您可以通过按 f8 或 f5 实际上是不同的 f 来跟踪步
  • 如何通过注解用try-catch包装方法?

    如果应该在方法调用中忽略异常 则可以编写以下内容 public void addEntryIfPresent String key Dto dto try Map
  • org/codehaus/plexus/archiver/jar/JarArchiver(不支持的major.minor版本49.0)-Maven构建错误

    下午大家 我在尝试构建项目时收到上述错误 我很确定这与使用 Java 1 6 编译的 Maven 最新更新有关 而我们尝试构建的项目是 1 4 项目 在此之前的插件工作没有问题 因此我将以下内容添加到 POM xml 文件中以尝试强制使用现
  • Eclipse - 安装新的 JRE (Java SE 8 1.8.0)

    我正在尝试安装 Java 8 到目前为止我所做的 安装最新版本的 Eclipse 下载并安装 Java SE 运行时环境 8http www oracle com technetwork java javase downloads jre8
  • 如何通过 Android 按钮单击运行单独的应用程序

    我尝试在 Android 应用程序中添加两个按钮 以从单独的两个应用程序订单系统和库存系统中选择一个应用程序 如图所示 我已将这两个应用程序实现为两个单独的 Android 项目 当我尝试运行此应用程序时 它会出现直到正确选择窗口 但是当按
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • 使用Java绘制维恩图

    我正在尝试根据给定的布尔方程绘制维恩图 例如 a AND b AND c我想在 Android 手机上执行此操作 因此我需要找到一种使用 Java 来执行此操作的方法 我找到了一个完美的小部件 它可以完成我在这方面寻找的一切布尔代数计算器
  • 替换文件中的字符串

    我正在寻找一种方法来替换文件中的字符串而不将整个文件读入内存 通常我会使用 Reader 和 Writer 即如下所示 public static void replace String oldstring String newstring
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • ArrayList.clear() 和 ArrayList.removeAll() 有什么区别?

    假如说arraylist定义为ArrayList

随机推荐

  • 【Spring

    上文讲了 Spring 资源处理 本文讲一下resource的扩展接口相关 资源处理扩展 ResourceLoader 接口 定义 图解 示例 策略 ResourcePatternResolver接口 ResourceLoaderAware
  • 实例修改类属性python_Python类属性和实例属性的优先级

    可以看到 属性可以分为类属性和实例属性 那么问题就来了 如果类属性和实例属性名字相同时 会怎么样 这就涉及Python中类属性和实例属性的优先级的问题了 我们可以做一个实验 在前面类定义的基础上 在实例属性中 也初始化一个localtion
  • DS18B20温度传感器原理及使用教程

    1 芯片简介 DS18B20数字温度传感器提供9 Bit到12 Bit的摄氏温度测量精度和一个用户可编程的非易失性且具有过温和低温触发报警的报警功能 DS18B20采用的1 Wire通信即仅采用一个数据线 以及地 与微控制器进行通信 该传感
  • Linux下安装/使用mariadb

    文章目录 第一章 mariadb在rhel7上的使用 第二章 mariadb在rhel6上的安装 1 编译源码包 比较慢 2 二进制包安装 比较推荐 第一章 mariadb在rhel7上的使用 rhel7及以上系统默认安装了mariadb
  • C#基础入门之数据类型

    一 值类型和引用类型 在C 中数据类型总共可以分为两类 分别是值类型和引用类型 值类型 表示复制一个当前变量传给方法 当你在这个方法中改变这个变量的值时 最初生命的变量的值不会变 引用类型 表示你操作的数据是同一个 也就是说当你传一个参数给
  • 物联网面试必过要点

    要是能熟记以下知识点 再加上自身的项目经验 过个面试 问题不大 指针定义 一个指向指针的的指针 它指向的指针是指向一个整型数 int a 一个有10个指针的数组 该指针是指向一个整型数的 int a 10 一个指向有10个整型数数组的指针
  • bind的原理和bind的实现

    一 bind的特性 传递的第一个参数做为调用它的函数的this指向 bind可传递若干参数 若第一个参数传递基础数据类型 则调用他的函数的this指向该基础数据类型的包装类实例化对象 若第一个参数为null或undefined 则调用他的函
  • 数据库操作 - 关系模型

    关系数据库是建立在关系模型上的 而关系模型本质上就是若干个存储数据的二维表 可以把它们看作很多Excel表 gt 表的每一行称为记录 Record 记录是一个逻辑意义上的数据 gt 表的每一列称为字段 Column 同一个表的每一行记录都拥
  • 并查集、树状数组

    并查集 树状数组 线段树 并查集 树状数组 树状数组1 单点修改 区间查询 树状数组2 单点查询 区间修改 并查集 模板 并查集 题目描述 如题 现在有一个并查集 你需要完成合并和查询操作 输入格式 第一行包含两个整数 N M N M N
  • 清华镜像用法

    用pip安装模块时 总是会报错 大片红字 请求超时 影响心情 如果使用镜像安装 就会很顺 敲一下回车键 一两秒就搞定 节约时间 平常简单用法是 pip install beautifulsoup4 加入镜像参数后 pip install b
  • 任意进制转换(c++)

    include
  • OpenHarmony源码解析(12): hisysevent

    1 概述 HiSysEvent是面向OpenHarmony系统开发者提供的系统打点功能 通过在关键路径埋点来记录系统在运行过程中的重要信息 辅助开发者定位问题 此外还支持开发者将打点数据上传到云进行大数据质量度量 HiSysEvent包括H
  • 并查集的妙用——Leetcode 1202

    并查集的妙用 Leetcode 1202 给你一个字符串 s 以及该字符串中的一些 索引对 数组 pairs 其中 pairs i a b 表示字符串中的两个索引 编号从 0 开始 你可以 任意多次交换 在 pairs 中任意一对索引处的字
  • Springboot-data-redis结合SpringCache的使用

    spring boot data redis 与 Caache的结合使用 一 springboot data redis操作redis 二 结合Spring Cache 的使用 一 springboot data redis操作redis
  • kali与Windows安装双系统,grub引导器安装失败,或安装grub后无法引导kali系统问题解决

    1 先看问题 安装失败图片 这个时候不要慌 既然它的自动安装无法搞定 那我们就手动安装grub引导器 注意 本人电脑环境是 windows10 分区表类型是GPT类型 尝试安装kali双系统出现grub引导器错误 不同环境下解决方法可能会有
  • React-防抖

    React实际操作 两个事件 onMouseOver 和 onMouseOut HTML div gt this onMouseOver record onMouseOut this onMouseOut gt constructor co
  • 彷徨

    目录 1 slaves 2 core site xml 3 hdfs site xml 4 mapred site xml 注意要将mapred site xml template重命名为 xml的文件 5 Yarn Site xml 6
  • R手册(Common)--面向对象(R6 and S4)

    R 主要面向统计计算 似乎很少会用到面向对象的编程方法 但在统计计算中 在下列情形中使用面向对象的编程方法可以编程更有效率 文章目录 面向对象R6类 面向对象S4类 自定义S4类 实例化函数 S4的泛型函数 面向对象R6类 R 的面向对象
  • Java实现图灵机XNx2

    题目要求 程序实现图灵机XNx2的功能 1 程序风格良好 使用自定义注释模板 2 提供友好的输入输出 并进行输入数据的正确性验证 语言环境 eclipse java 算法设计 程序代码 Number类 import java util Sc
  • 阿里p8架构师耗时一年整理SpringBoot,从构建小系统到架构大系统

    Java 的各种开发框架发展了很多年 影响了一代又一代的程序员 现在无论是程序员 还是架构师 使用这些开发框架都面临着两方面的挑战 一方面是要快速开发出系统 这就要求使用的开发框架尽量简单 无论是新手还是老手都能快速上手 快速掌握页面渲染