
Spring Boot
淹死的鱼pp
不忘初衷,方得始终
展开
-
springboot之redis的分布式锁
一、测试 @Autowired private RedisLockHelper redisLockHelper; private static final String LOCK ="lock:equipment"; // 14: 48执行 //@Scheduled(cron = "0 48 14 ? * *") public voi...原创 2020-04-08 15:41:11 · 6645 阅读 · 0 评论 -
第 5-8 课:综合实战客户管理系统(⼆)
客户管理系统需要考虑验证⽤户的注册邮箱是否正确,使⽤ Filter 来判断⽤户的登录状态是否已经启⽤,以及在 项⽬中缓存的使⽤,如何使⽤ Thymeleaf 的最新语法判断表达式对⻚⾯布局,最后讲解使⽤ Docker 部署客户管 理系统。 邮箱验证 我们希望⽤户注册的邮箱信息是正确的,因此会引⼊邮件验证功能。注册成功后会给⽤户发送⼀封邮件,邮件中 会有⼀个关于⽤户的唯⼀链接,当...原创 2020-01-10 14:20:03 · 11181 阅读 · 0 评论 -
第 5-7 课:综合实战客户管理系统(⼀)
最后两课的内容是实践,结合前⾯课程的技术来做⼀个简单的⽤户管理系统,该系统包括以下功能:管理员 注册、注册验证、管理员登录、管理员退出、添加⽤户、修改⽤户、删除⽤户、浏览⽤户信息等功能。 技术选型,使⽤ MongoDB 存储系统数据、使⽤ Filter 检查⽤户的登录状态、使⽤ Redis 管理⽤户 Session\ 数据缓存、使⽤ Spring Boot Mail 验证⽤户注册邮箱,...原创 2020-01-10 13:56:06 · 12003 阅读 · 1 评论 -
第 5-6 课:使⽤ Docker 部署 Spring Boot 项⽬
如今 Docker 的使⽤已经⾮常普遍,特别是在⼀线互联⽹公司,使⽤ Docker 技术可以帮助企业快速⽔平扩展 服务,从⽽达到弹性部署业务的能⼒。在云服务概念兴起之后,Docker 的使⽤场景和范围进⼀步发展,如今 在微服务架构越来越流⾏的情况下,微服务 + Docker 的完美组合,更加⽅便微服务架构运维部署落地。 什么是 Docker Docker 最初是 dotCloud ...原创 2020-01-10 11:49:10 · 7732 阅读 · 0 评论 -
第 5-5 课: 如何打包部署 Spring Boot 项⽬
Spring Boot 使⽤了内嵌容器,因此它的部署⽅式也变得⾮常简单灵活,⼀⽅⾯可以将 Spring Boot 项⽬打包 成独⽴的 Jar 或者 War 包来运⾏,也可以单独打包成 War 包部署到 Tomcat 容器中运⾏,如果涉及到⼤规模 的部署 Jinkins 就成为最佳选择之⼀。 Spring Boot 默认集成 Web 容器,启动⽅式和普通 Java 程序⼀样,mai...原创 2020-01-10 11:26:09 · 9507 阅读 · 0 评论 -
第 5-4 课: Spring Boot 对测试的⽀持
在微服务架构下,整个系统被切割为 N 个独⽴的微服务相互配合来使⽤,那么对于系统可⽤性会有更⾼的要 求。从⼤到⼩可以分为三个层级,开发⼈员编码需要做的单元测试、微服务和微服务之间的接⼝联调测试、 微服务和微服务之间的集成测试,通过三层的严格测试才能有效保证系统的稳定性。 作为⼀名开发⼈员,严格做好代码的单元测试才是保证软件质量的第⼀步。Spring Boot 做为⼀个优秀的开源 ...原创 2020-01-10 11:07:34 · 9430 阅读 · 0 评论 -
第 5-3 课:Spring Boot Admin 的使⽤
Spring Boot Actuator 提供了对单个 Spring Boot 应⽤的监控,信息包含应⽤状态、内存、线程、堆栈等,⽐ 较全⾯的监控了 Spring Boot 应⽤的整个⽣命周期。 但是这样监控也有⼀些问题:第⼀,所有的监控都需要调⽤固定的接⼝来查看,如果全⾯查看应⽤状态需要 调⽤很多接⼝,并且接⼝返回的 JSON 信息不⽅便运营⼈员理解;第⼆,如果 Spring ...原创 2020-01-10 10:50:58 · 7312 阅读 · 0 评论 -
第 5-2 课:使⽤ Spring Boot Actuator 监控应⽤
微服务的特点决定了功能模块的部署是分布式的,⼤部分功能模块都是运⾏在不同的机器上,彼此通过服务 调⽤进⾏交互,前后台的业务流会经过很多个微服务的处理和传递,出现异常如何快速定位便成为了⼀个问 题,在这种框架下微服务的监控显得尤为重要。 Spring Boot 是⼀个⾃带监控的开源框架,组件 Spring Boot Actuator 负责监控应⽤的各项静态和动态的变 量。项⽬结...原创 2020-01-10 10:33:19 · 24002 阅读 · 0 评论 -
第 5-1 课:使⽤ Spring Boot Security 进⾏安全控制
《精通 Spring Boot 42 讲》共分五⼤部分,这是最后⼀部分的内容了,主要包含安全、测试、部署、监 控及综合实践。对于安全访问控制主要讲解 Spring Boot Security 的使⽤;监控主要使⽤ Spring Boot Actuator 和 Spring Boot Admin,在实际的⽣产应⽤中这两个组件⾮常实⽤;Spring Boot 对测试的⽀持 是全⾯的,这⼀部...原创 2020-01-10 10:08:37 · 8892 阅读 · 0 评论 -
第 4-10 课:使⽤ Spring Boot 开发邮件系统
电⼦邮件是在因特⽹上使⽤的⾮常多的⼀种应⽤,它可以⾮常⽅便的让相隔很远的⼈进⾏通信,主要特点是 操作简单、快捷。现在的电⼦邮件系统是以存储与转发的模型为基础,邮件服务器接收、转发、提交及存储 邮件,寄信⼈、收信⼈及他们的计算机都不⽤同时在线,寄信⼈和收信⼈只需在寄信或收信时简短的连线到 邮件服务器即可。 互联⽹发展到现在,邮件服务已经成为互联⽹企业中必备功能之⼀,应⽤场景⾮常...原创 2020-01-09 20:19:07 · 17858 阅读 · 0 评论 -
第 4-9 课:Spring Boot 集成 Quartz
在项⽬开发中,经常需要定时任务来帮助我们来做⼀些内容,⽐如定时派息、跑批对账、业务监控等。 Spring Boot 体系中现在有两种⽅案可以选择,第⼀种是 Spring Boot 内置的⽅式简单注解就可以使⽤,当然 如果需要更复杂的应⽤场景还是得 Quartz 上场,Quartz ⽬前是 Java 体系中最完善的定时⽅案。 ⾸先来看看 Spring Boot ⾃带的定时⽅案。 Sp...原创 2020-01-09 19:51:51 · 8659 阅读 · 0 评论 -
第 4-8 课:Spring Boot 集成 ElasticSearch
ElasticSearch 是⼀个开源的搜索引擎,建⽴在⼀个全⽂搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、⾼性能、全功能的搜索引擎库——⽆论是开源还是私有。 ElasticSearch 使⽤ Java 编写的,它的内部使⽤的是 Lucene 做索引与搜索,它的⽬的是使全⽂检索变得简 单,通过隐藏 Lucene 的复杂性,取⽽代之提...原创 2020-01-09 19:24:35 · 15376 阅读 · 0 评论 -
第 4-7 课:Spring Boot 简单集成 MongoDB
MongoDB 如今是最流⾏的 NoSQL 数据库,被⼴泛应⽤于各⾏各业中,很多创业公司数据库选型就直接使⽤ 了 MongoDB,但对于⼤部分公司,使⽤ MongoDB 的场景是做⼤规模数据查询和离线分析。MongoDB ⼀经 推出就受到了⼴⼤社区的热爱,可以说是对程序员最友好的⼀种数据库,下⾯我们来了解⼀下它的特性。 MongoDB 简介MongoDB(Humongous,庞⼤)...原创 2020-01-09 18:58:59 · 7551 阅读 · 0 评论 -
第 4-6 课:Spring Boot RabbitMQ 详解
RabbitMQ 介绍 AMQP(Advanced Message Queuing Protocol,⾼级消息队列协议)是应⽤层协议的⼀个开放标准,为⾯ 向消息的中间件设计。消息中间件主要⽤于组件之间的解耦,消息的发送者⽆需知道消息使⽤者的存在,反 之亦然。 AMQP 的主要特征是⾯向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ 是⼀...原创 2020-01-09 17:15:15 · 13852 阅读 · 0 评论 -
第 4-5 课:使⽤ Spring Boot 操作 ActiveMQ
消息队列中间件是分布式系统中重要的组件,主要解决应⽤耦合、异步消息、流量削锋等问题,实现⾼性 能、⾼可⽤、可伸缩和最终⼀致性架构,是⼤型分布式系统不可缺少的中间件。 ⽬前在⽣产环境中使⽤较多的消息队列有 ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ 等。 特性 异步性:将耗时的同步操作通过以发送消息的⽅式进⾏了异步化处理,减...原创 2020-01-09 16:54:19 · 13705 阅读 · 0 评论 -
第 4-4 课:Spring Boot 中使⽤ Cache 缓存的使⽤
我们知道绝⼤多数的⽹站/系统,最先遇到的⼀个性能瓶颈就是数据库,使⽤缓存做数据库的前置缓存,可以 ⾮常有效地降低数据库的压⼒,从⽽提升整个系统的响应效率和并发量。 以往使⽤缓存时,通常创建好缓存⼯具类,使⽤时将对应的⼯具类注⼊,操作⼯具类在前端处理缓存的逻 辑。其实这种⽅式是低效的,⼤部分使⽤缓存的场景是基于数据库的缓存,这类缓存场景的逻辑往往是:如 果缓存中存在数据,就从缓...原创 2020-01-09 16:41:43 · 10619 阅读 · 0 评论 -
第 4-3 课:使⽤ Redis 实现 Session 共享
在微服务架构中,往往由多个微服务共同⽀撑前端请求,如果涉及到⽤户状态就需要考虑分布式 Session 管 理问题,⽐如⽤户登录请求分发在服务器 A,⽤户购买请求分发到了服务器 B, 那么服务器就必须可以获取 到⽤户的登录信息,否则就会影响正常交易。因此,在分布式架构或微服务架构下,必须保证⼀个应⽤服务 器上保存 Session 后,其他应⽤服务器可以同步或共享这个 Session。 ...原创 2020-01-09 16:26:55 · 8309 阅读 · 0 评论 -
第 4-2 课:Spring Boot 和 Redis 常⽤操作
Redis 是⽬前使⽤最⼴泛的缓存中间件,相⽐ Memcached,Redis ⽀持更多的数据结构和更丰富的数据操 作,另外 Redis 有着丰富的集群⽅案和使⽤场景,这⼀课我们⼀起学习 Redis 的常⽤操作。 Redis 介绍 Redis 是⼀个速度⾮常快的⾮关系数据库(Non-Relational Database),它可以存储键(Key)与 5 种不同 类型的值(Value...原创 2020-01-09 15:21:59 · 9620 阅读 · 0 评论 -
第 4-1 课:Spring Boot 操作 Memcache
《精通 Spring Boot 42 讲》共分五⼤部分,第四部分主要讲解 Spring Boot 和中间件的使⽤,共 10 课,中间件是互联⽹公司⽀撑⾼并发业务的必备组件,常⽤的组件有缓存、消息中间件、NoSQL 数据 库、定时任务等。常⽤的缓存中间件有 Memcache 和 Redis,缓存主要⽀撑业务架构中⾼速读写;常 ⽤的消息中间件有 ActiveMQ 、RabbitMQ,使⽤消...原创 2020-01-09 14:57:50 · 9214 阅读 · 0 评论 -
第 3-8 课:Spring Data JPA 和 Thymeleaf 综合实践
在前⾯课程中,我们学习了 Spring Boot Web 开发、JPA 数据库操作、Thymeleaf 和⻚⾯交互技术,这节课 综合这些内容做⼀个⽤户管理功能,包括展示⽤户列表(分⻚)、添加⽤户、修改⽤户和删除⽤户。有⼈说 程序员的⼀⽣都是在增、删、改、查,这句话不⼀定全对,但也有⼀定的道理,相⽐于这句话,我更认同的 是这句:程序员的技术学习都是从增、删、改、查开始的。 这节...原创 2020-01-06 19:57:39 · 9011 阅读 · 0 评论 -
第 3-7 课:Spring Boot 集成 Druid 监控数据源
Druid 介绍 Druid 是阿⾥巴巴开源平台上的⼀个项⽬,整个项⽬由数据库连接池、插件框架和 SQL 解析器组成,该项⽬ 主要是为了扩展 JDBC 的⼀些限制,可以让程序员实现⼀些特殊的需求,⽐如向密钥服务请求凭证、统计 SQL 信息、SQL 性能收集、SQL 注⼊检查、SQL 翻译等,程序员可以通过定制来实现⾃⼰需要的功能。 Druid ⾸先是⼀个数据库连接池,但它不仅...原创 2020-01-06 19:41:10 · 8825 阅读 · 0 评论 -
第 3-6 课:Spring Data JPA 多数据源的使⽤
项⽬中使⽤多个数据源在以往⼯作中⽐较常⻅,微服务架构中不建议⼀个项⽬使⽤多个数据源。在微服务架 构下,⼀个微服务拥有⾃⼰独⽴的⼀个数据库,如果此微服务要使⽤其他数据库的数据,需要调⽤对应库的 微服务接⼝来调⽤,⽽不是在⼀个项⽬中连接使⽤多个数据库,这样微服务更独⽴、更容易⽔平扩展。 虽然在微服务架构下,不提倡⼀个项⽬拥有多个数据源,但在 Spring Boot 体系中,项⽬实现多...原创 2020-01-06 16:42:37 · 7908 阅读 · 0 评论 -
第 3-5 课:Spring Data JPA 的⾼级⽤法
上节课介绍了 Spring Data JPA 的使⽤⽅式和基本查询,常⽤的增、删、改、查需求 Spring Data JPA 已经实 现了。但对于复杂的数据库场景,动态⽣成⽅法不能满⾜,对此 Spring Data JPA 提供了其他的解决⽅案, 这就是这节课的主要内容。⾃定义 SQL 查询 使⽤ Spring Data ⼤部分的 SQL 都可以根据⽅法名定义的⽅式来实现,但是由...原创 2020-01-06 16:31:08 · 7370 阅读 · 0 评论 -
第 3-4 课: Spring Data JPA 的基本使⽤
Spring Data JPA 是 Spring Boot 体系中约定优于配置的最佳实现,⼤⼤简化了项⽬中数据库的操作。从本课 开始将会从 JPA 的由来开始讲解,什么是 JPA、Spring Boot JPA 的实现,以及如何使⽤。 概念JPA 由来 ORM 框架能够将 Java 对象映射到关系数据库中,能够直接持久化复杂的 Java 对象。ORM 框架的出现,可 以让开发者...原创 2020-01-03 16:01:53 · 12794 阅读 · 0 评论 -
第 3-3 课:SpringBoot如何优雅地使⽤ MyBatis 注解版
⾃从 Java 1.5 开始引⼊了注解,注解便被⼴泛地应⽤在了各种开源软件中,使⽤注解⼤⼤地降低了系统中的 配置项,让编程变得更为优雅。MyBatis 也顺应潮流基于注解推出了 MyBatis 的注解版本,避免开发过程中 频繁切换到 XML 或者 Java 代码中,从⽽让开发者使⽤ MyBatis 会有统⼀的开发体验。 因为最初设计时,MyBatis 是⼀个 XML 驱动的框架,...原创 2020-01-03 15:42:44 · 12877 阅读 · 0 评论 -
第 3-2 课:SpringBoot如何优雅地使⽤ MyBatis XML 配置版
MyBatis 是现如今最流⾏的 ORM 框架之⼀,我们先来了解⼀下什么是 ORM 框架。 ORM 框架 对象关系映射(Object Relational Mapping,ORM)模式是⼀种为了解决⾯向对象与关系数据库存在的互不 匹配的现象的技术。简单的说,ORM 是通过使⽤描述对象和数据库之间映射的元数据,将程序中的对象⾃动 持久化到关系数据库中。为...原创 2020-01-03 15:24:45 · 12979 阅读 · 0 评论 -
第 3-1 课:Spring Boot 使⽤ JDBC 操作数据库
《精通 Spring Boot 42 讲》共分五⼤部分,第三部分主要讲解 Spring Boot 和数据库开发,共 8 课。 Spring Boot ⽀持了主流的 ORM 框架:MyBatis、Hibernate 和 Spring JDBC,⼏种 ORM 在不同的场 景下各有优势,在 Spring Boot 体系内都有对应的 Starter 包以⽅便集成。⾸先将讲解 Spring JDBC ...原创 2020-01-03 14:47:06 · 5337 阅读 · 0 评论 -
springboot 使用 Spring Boot WebSocket 创建聊天室 2-11
什么是 WebSocketWebSocket 协议是基于 TCP 的一种网络协议,它实现了浏览器与服务器全双工(Full-duplex)通信—允许服务器主动发送信息给客户端。以前,很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的的时间隔(如每 1秒),由浏览器对服务器发出 HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览...原创 2019-11-27 16:39:32 · 16433 阅读 · 0 评论 -
Spring Boot 使用 Swagger 2 构建 RESTful APIs 2-10
什么是 SwaggerSwagger 是一系列 RESTful API 的工具,通过 Swagger 可以获得项目的一种交互式文档,客户端 SDK 的自动生成等功能。Swagger 的目标是为 REST APIs 定义一个标准的、与语⾔言无关的接口,使人和计算机在看不到源码或者看不到文档或者不能通过网络流量检测的情况下,能发现和理解各种服务的功能。当服务通过 Swagger 定义,消...原创 2019-11-14 21:44:28 · 6826 阅读 · 0 评论 -
Spring Boot 构建一个 RESTful Web 服务 2-9
现在越来越多的企业推荐使用 RESTful 风格来构建企业的应用接口,那么什么是 RESTful 呢?什么是 RESTfulRESTful 是目前最流行的一种互联网软件架构。 REST(Representational State Transfer,表述性状态转移)一词是由 Roy Thomas Fielding 在他 2000 年年博士论文中提出的,定义了他对互联网软件的架构原则...原创 2019-11-14 20:16:25 · 12007 阅读 · 0 评论 -
SpringBoot 使用 Spring Boot 上传文件到 FastDFS 2-8
什么是 FastDFSFastDFS 是一个开源的轻量级分布式文件系统,它解决了大数据量存储和负载均衡等问题,特别适合以中小文件(建议范围: 4 KB < file_size < 500 MB)为载体的在线服务,如相册网站、视频网站等。在 UC 基于FastDFS 开发向用户提供了网盘、社区、广告和应用下载等业务的存储服务。FastDFS 由 C 语言开发,支持 Lin...原创 2019-11-02 23:02:24 · 10744 阅读 · 0 评论 -
SpringBoot 使用Spring Boot 和 Thymeleaf 演示上传文件 2-7
在互联网行业中上传文件是一个高频的使用场景,常用的案例有上传头像、上传身份证信息等。 Spring Boot利利用 MultipartFile 的特性来接收和处理上传的文件, MultipartFile 是 Spring 的一个封装的接口,封装了文件上传的相关操作,利用 MultipartFile 可以方便地接收前端文件,将接收到的文件存储到本机或者其他中间件中。首先通过一个小的示例来了解 S...原创 2019-10-20 16:52:21 · 6983 阅读 · 2 评论 -
Spring Boot Thymeleaf 页面布局 2-6
页面布局就是对前端的页面进行划分区域,每个区域有不同的职责,布局是为了更好地重复利用前端代码,避免大量重复性的劳动。在现有的前端系统中,页面布局成了前端开发最重要的工作之一, Thymeleaf 在设计之初对页面布局就有考虑,通过 Thymeleaf 的相关语法可以很容易地实现对前端页面布局。快速入手Spring Boot 2.0 将布局单独提取了出来,需要单独引入依赖: thymel...原创 2019-11-02 22:48:20 · 3957 阅读 · 0 评论 -
Spring Boot 产生的背景和它的设计理念 1-1
要了解 Spring Boot 产⽣的背景,我们就必须要先了解一下 Spring 发展史,不仅因为 Spring Boot 来源于Spring 体系,而且 Spring Boot 的诞⽣生和 Spring 框架的发展息息相关Spring 发展历史时间回到 2002 年,当时正是 Java EE 和 EJB 大行其道的时候,很多知名公司都是采⽤用此技术方案进行项目开发。这时候...原创 2019-09-05 10:19:48 · 1445 阅读 · 0 评论 -
Spring Boot 都更新了什么(上)1-2
2018 年 3 月 1 号 Spring Boot 2.0RELEASE 正式发布,这是 Spring Boot 1.0 发布 4 年之后第一次重大修订,因此有多新功能和特性值得关注!在 Spring Boot 官方博客中我们了解到: Spring Boot 2.0 版本经历了17 个月的开发,有 215 个不同的使用者提供了超过 6800 次的提交。我们将 Spring Bo...原创 2019-09-06 19:51:55 · 18698 阅读 · 0 评论 -
Spring Boot 都更新了什么(下)1-3
Spring Boot 2.0 支持了动态 Gif 的启动 Logo 打印。在 Spring Boot 1.0 项目中 src/main/resources 路径下新建一个 banner.txt 文件,⽂件中写入一些字符,启动项目时就会发现默认的 Banner 被替换了,到了 Spring Boot 2.0 现在可以支持 Gif 文件的打印, Spring Boot2.0 在项目启动...原创 2019-09-06 20:01:04 · 8126 阅读 · 0 评论 -
Spring Boot 依赖环境和项目结构介绍 1-4
使用 Spring Boot 开发项目需要有两个基础环境和一个开发工具,这两个环境是指 Java 编译环境和构建工具环境,一个开发工具是指 IDE 开发工具。Spring Boot 2.0 要求 Java 8 作为最低版本,需要在本机安装 JDK 1.8 并进行环境变量配置,同时需要安装构建工具编译 Spring Boot 项目,最后准备一个顺手的 IDE 开发工具即可。构建...原创 2019-09-06 20:13:38 · 21037 阅读 · 0 评论 -
Spring Boot 写 一个 Hello World 来感受 一下 1-5
在学习新技术的时候我们都喜欢先写一个 Hello World 程序,一方面可以验证基础环境的搭建是否正确,另一方面可以快速了解整个开发流程。本节课我们就来学习 Spring Boot 的第一个 Hello World 程序。什么是 Spring BootSpring 在官方首页这样介绍:Spring Boot 可以构建一切。 Spring Boot 设计之初就是为了最少的配置,...原创 2019-09-09 22:15:17 · 3262 阅读 · 0 评论 -
Spring Boot 对基础 Web 开发的支持(上)2-1
自从 B/S 架构(Browser/Server,浏览器/服务器模式)被发明以来,因为其具有跨平台、易移植、方使用等特点,迅速地成为了技术架构的首选,前端 Web 技术迅速发展起来。人们利用前端 Web 技术构建各种应用场景,如电子商务平台、在线聊天室、后台管理系统等。页面技术也从最初的 JSP 演化为现在的模板引擎;信息交互由以前的 XML 发展到现在更更流行的 JSON; Spring ...原创 2019-09-09 22:38:40 · 20059 阅读 · 0 评论 -
Spring Boot 对基础 Web 开发的支持(下)2-2
接着上一课我们继续讲解。数据校验在很多时候,当我们要处理一个应用程序的业务逻辑时,数据校验是必须要考虑和面对的事情。应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。在 Java 应用程序中,必须要对输入进来的数据从语义上分析是有效的,也就是数据校验。输入验证最重要的 Web 开发任务之一,在 Spring MVC 中有两种方式可以验证输入:一种是 Spr...原创 2019-09-09 23:14:43 · 21644 阅读 · 0 评论