Spring Boot 2系列(五十):Spring AOP 实现动态数据源切换

项目可能会有多个数据源,例如读写分离至少有两个数据库,或一个主库多个从库,或一个系统里面不同业务拆分有各自的数据库,在使用时需要确定使用正确的数据源。

Spring 多数据源实现方式大概有2种,一种是新建多个 MapperScan 扫描不同 Mapper 包,另一种是继承 AbstractRoutingDataSource 实现动态路由。

本篇是基于 Spring AOP 实现数据源动态路由,多个 MapperScan 扫描不同的 Mapper 包的方式可参考 Spring Boot 2实践系列(三十九):Spring Boot 2.x + Mybatis + Druid + Common Mapper 配置多数据源

阅读更多

Spring Boot 2系列(四十九):Spring AOP 实现统一记录请求和响应日志,解密并重设置请求入参值

在实际开发中,可能需要打印方法的入参和返回的数据以帮助出现问题时可快递定位.

常规的做法在方法中的业务处理之前使用 Logger 打印方法入参,在业务处理之后打印结果数据,这样就会在很多方法中存在重复代码。

像打印日志这类跨多个业务和模块的需求,可以通过 Spring AOP 来统一实现,完全省略了方法中手动添加 Logger 的操作。

阅读更多

Spring Boot 2系列(四十八):Spring AOP详解与应用

Aspect-oriented Programming (AOP:面向切面编程) 提供另一种思考程序结构的方式来补充(增强) 面向对象编程(OOP)。

OOP 中模块化的关键单元是类,倾向于采用封装、继承、多态等概念,将一个个的功能在对象中来实现。而在 AOP 中模块化的单元是 切面,切面使关注点(例如事务管理)模块化,可以跨越多种类型和对象。

Spring AOP 框架是 Spring 的核心组件之一。Spring IoC 容器不依赖于 AOP,但 AOP 是对 Spring IoC 的补充,以提供功能强大的中间件解决方案。

阅读更多

Spring Boot 2系列(四十七):Spring AOP 实现API接口处理请求耗时监控

本篇文章算是 Spring Boot 2实践系列(四十六):API接口请求限制之AOP与拦截器实现 的下篇,也是基于拦截器和 AOP 两种方式实现对 API 接口请求响应的耗时进行统计,也是对涉及的知识点学习和巩固。

开发任何一个系统,都应当对 API 接口响应时长进行监控以了解系统性能,帮助判断性能瓶颈(当然很多小公司或小系统并没有这个意识,或有这个意识但没有落地实行)。

阅读更多

Spring Boot 2系列(四十五):RestTemplate 源码分析与自定义请求和拦截器

Saas 项目分布式微服务架构,服务调用使用的是 RestTemplate,并且对 RestTemplate 的 Request 请求进行了自定义,做个记录。

自定义 Request 有很多作用。例如自定义请求实现安全认证,自定义请求拦截器实现负载均衡或请求代理等,可以非常灵活的做些定制化。

RestTemplate 相关文章:Spring Boot 2实践系列(二十一):RestTemplate 远程调用 REST 服务Spring Cloud系列(四):客户端负载均衡 Ribbon

阅读更多

Spring Cloud(十八):消息驱动-Stream 绑定器实现之 RabbitMQ,Kafka

Spring Cloud Stream 提供了 Rabbit 和 Kafka 的绑定器实现,但 Rabbit 与 Kafka 的实现结构并不完全相同,这两者与 Spring Cloud Stream 提供的绑定器实现的关联概念需要了解清楚。

Spring Cloud Stream Kafka Binder 参考指南Spring Cloud Stream RabbitMQ Binder 参考指南Github > spring-cloud-stream-binder-rabbitGithub > spring-cloud-stream-binder-kafka

阅读更多

Spring Cloud(十七):消息驱动之Spring Cloud Stream 编程模型

本篇主要描述 Spring Cloud Stream 编程模型的三个核心概念:Destination Binders(目标绑定器)、Destination Bindings(目标绑定)、Message(消息),还包含错误处理。

理解这些核心概念,了解具体使用及其背后一些运行机制,可以更好的理解 Spring Cloud Stream 这款组件。

Spring Cloud Stream 官方文档Spring Cloud Stream ProjectGithub > Spring Cloud StreamGithub > Spring-Retry

阅读更多

Spring Cloud(十六):消息驱动-Stream 概念、绑定器、属性

Spring Cloud Stream 是一个用于构建消息驱动的微服务应用的框架。Spring Cloud Stream 构建于Spring Boot之上,用于创建独立的生产级 Spring 应用程序,并使用 Spring Integration 提供与消息代理的连接。

Spring Cloud Stream 还为一些供应商的消息中间件提供了个性化的独立配置实现。还引入了持久化发布 - 订阅,消费者组 和 分区 的概念。

阅读更多