NekoChip's Blog

一生懸命

文章

Spring Boot 应用监控管理

Spring Boot 默认提供了 Actuator 组件来监控 Spring Boot 应用。我们可以通过使用 Actuator 中的 REST API 来查看应用的一些端点信息,从而了解应用程序的运行状况。 而 Spring Boot Admin 是一款基于 Spring Boot Actuator 的 Web 服务,并提供图形化界面,可以更加直观地查看 Spring Boot 应用的运行状态。 在最近使用 Spring Boot Admin 的同时,发现它的图形化界面开始支持中文了,这无疑对国内的开发运维人员提供了便捷。本文将通过最新版本的 Spring Boot 2.3.0.RELEASE 结合 Spring Boot Admin 2.2.3 来简单介绍一下 Spring Boot Admin 的使用。 1. Spring Boot Actuator 在使用 Spring Boot Admin 之前,我们需要先行了解 Spring Boot Actuator 提供了哪些功能。 1.1. 添加依赖 <dependency> <groupId>org.spr....

Spring Boot 使用 Kafka 生产和消费消息

引用一段官网的说明: Apache Kafka 是 一个分布式流处理平台 ,主要有以下三个特性: 可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。 可以储存流式的记录,并且有较好的容错性。 可以在流式记录产生时就进行处理。 Kafka 的一些基本概念: Kafka 是以一个集群的方式运行在一台或者多台服务器上的。 Kafka 的消息以 topic 来进行区分。 将向 Kafka 集群中指定的 topic 发布消息的服务称为 Producer。 将从 Kafka 集群中指定的一个或多个 topic 中获取消息并消费的服务称为 Consumer。 以上内容均来自:Kafka 中文文档 。有关 topic、producer、consumer、client 的详细讲解可阅读官方文档。 1. 搭建 Kafka 环境 由于个人较为倾向于使用 Docker 搭建服务环境,所以文中只介绍如何使用 Docker 搭建 Kafka 环境。 在 kafka 目录下创建 docker-compose.yml 文件。 docker-compose.yml 文件内容: vers....

Spring Boot Mybatis 优雅解决敏感信息加解密问题

前言:在一些特定的应用场景下,需要对用户的敏感信息做加密处理,同样的在读取用户信息的时候又需要解密处理。 1. 常见解决方案 针对这种应用场景,通常我们的做法是:在数据入库之前,对敏感数据进行加密。执行查询 sql 返回结果后,再对结果进行解密。 我们很容易想到如下代码: @Override public int saveOne(VipCard vipCard) { vipCard.setName(encrypt(vipCard.getName())); vipCard.setCardNo(encrypt(vipCard.getCardNo())); vipCard.setIdNumber(encrypt(vipCard.getIdNumber())); vipCard.setPhoneNumber(encrypt(vipCard.getPhoneNumber())); return vipCardMapper.saveOne(vipCard); } @Override public VipCard findById(Integer id) { VipCard vipCard = v....

Spring Boot WebSocket 使用 SockJS 实现简单的聊天室功能

Spring Boot 提供了 Websocket 组件,直接使用即可。Spring 同时也封装了 SockJs 的消息传递功能,使用起来较为方便,开发过程中推荐使用。本文只讨论 SockJs 的方式。 1. 添加依赖 <!-- websocket --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> 2. 自定义消息处理器 Spring Boot 提供了一个 WebSocketHandler 消息处理接口,源码如下: public interface WebSocketHandler { void afterConnectionEstablished(WebSocketSession session) throws Exception; void handleMessage(WebSocketS....

Spring Boot 基于 AOP 搭建日志模块

AOP 是一种编程思想,Spring AOP 可以让我们从业务流程中抽取出一些通用的功能,然后针对这些通用的功能编写业务代码。而系统操作日志的记录功能就是这种通用的功能。 1. 添加依赖 Spring Boot 提供了 spring-boot-starter-aop 组件,我们直接拿来使用就可以。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 2. 自定义注解 出于便捷性,通常情况下我们使用注解方式来标明通用功能的生效范围。 定义自定义日志记录注解 @RecordLog : @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface RecordLog { String value() default ""; } 这....

Spring Boot 整合 Swagger2

现在我们大多都是做的前后端分离的项目,那后台开发人员就难免需要编写接口文档提供给前端开发人员进行接口调试。虽说市面上已经有很多文档工具,如 ShowDoc 。而编写接口文档本身也是件比较耗时的事情,为了节省在这方面的耗时,Swagger 也就应运而生了。 使用 Swagger2 可以自动生成 RestFul API 接口文档, 并且以页面的形式展示出来,还提供了接口调试功能。一看这些功能,就感觉很舒服了。 👀 这里提醒一下,Swagger 是一款基于 RESTFul 风格的 API 文档生成工具,所以我们需要提前对 RESTFul 有一个了解,如何编写 RESTFul 风格的接口是至关重要的。 1. 添加依赖 <swagger.version>2.9.2</swagger.version> <!-- swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifact....

Spring Boot 使用 Mybatis 配置多数据源

本文以 Spring Boot 整合 Mybatis 为基础,在该基础上配置多数据源。 1. 修改配置文件 回顾一下在 Spring Boot 整合 Mybatis 中 application.yml 文件配置: spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: ## 数据库连接 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false username: demo password: demo ....... 我们将数据源配置交给 druid 来管理,所以配置多数据源时只需要在 druid 中添加数据源配置即可: spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: db1....

Spring Boot Config 配置

用过 Spring Boot 的大概都知道无论是通过 Spring Initializr 还是自己手动创建的 Spring Boot 项目,在 src/main/resources 目录下都会有一个 application.properties 或者 application.yml 文件。而我们可以通过这个文件对默认的一些配置进行修改。 1. 两者配置文件有什么不同吗? 这两种配置文件在功能上是没有任何区别的。两者相比较的话, yaml 类型的配置文件可读性更高,文件结构更清晰,所以推荐使用 yaml 类型的配置文件。 2. 自定义属性配置 除了 Spring Boot 默认提供的配置外,Spring Boot 允许我们在配置文件中配置一些自定义的属性。 ## 自定义属性 neko.blog.name=NekoChips' Blog neko.blog.url=https://chenyangjie.com.cn 创建一个类来接收这些配置属性: @Component public class MyBlog { @Value("${neko.blog.name:NekoChips....

Spring Boot 整合 ElasticSearch

在一般的项目开发中我们通常通过数据库来操作数据。在面临超大数据量的时,尽管通过 优化 sql,分库分表 等操作能够提升查询效率,但是就目前来说终究还是有些差强人意。而 ElasticSearch 全文搜索引擎在大数据量查询方面就显得尤为突出了。 阅读本文前,建议先花半个小时时间对 ElasticSearch 做个简单的了解。 1. 版本关系 Spring Boot 提供了对 ElasticSearch 的支持,由于 ElasticSearch 更新速度较快,Spring Boot 也无法及时做到相应的更新。在 Spring Boot 官网上也只出了对应的版本关系。 Spring Data Release TrainSpring Data ElasticsearchElasticsearchSpring Boot Moore3.2.x6.8.42.2.x Lovelace3.1.x6.2.22.1.x Kay3.0.x5.5.02.0.x Ingalls2.1.x2.4.01.5.x 在构建项目时需要注意版本对应关系,避免出现问题。 2. 添加依赖 当前项目Spr....

Spring Boot 使用 JdbcTemplate

我们在 Spring Boot 整合 Mybatis 中提到了 myabtis-spring-boot-starter 中引入了 spring-boot-starter-jdbc 依赖。而使用 JdbcTemplate 我们只需要在项目中引入 spring-boot-starter-jdbc 就可以使用了。 1. 添加依赖 在项目中我们依然使用 Druid 连接池,故添加 Druid 相关依赖: <!-- jdbc --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</a....

一生懸命

© 2021 NekoChip's Blog

Powered by Solo
Theme solo-sakura by adlered
  ❥(^_-)Enjoy Code Enjoy Life❥
版权所有 ICP 证:鄂ICP备19026877号-1

主题 | Theme