2020

随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一。Spring 3开始提供了强大的基于注解的缓存支持,可以通过注解配置方式低侵入的给原有Spring应用增加缓存功能,提高数据访问性能。 在Spring Boot中对于缓存的支持,提供了一系列的自动化配置,使我们可以非常方便的使用缓存。下面我们通过一个简单的例子来展示,我们是如何给一个既有应用增加缓存功能的。 快速入门下面我们将使用使用Spring Data JPA访问MySQL一文的案例为基础。这个案例中包含了使用Spring Data JPA访问User数据的操作,利用这个基础,我们为其添加缓存,来减少对数据库的IO,以达到访问加速的作用。如果您还不熟悉如何实现对MySQL的读写操作,那么建议先阅读前文,完成这个基础案例的编写。...

在昨天的《事务管理入门》一文发布之后,有读者联系说根据文章尝试,加了@Transactional注解之后,事务并没有回滚。 经过一顿沟通排查之后,找到了原因,在此记录一下,给后面如果碰到类似问题的童鞋一个参考。 问题原因在前文的描述中,我漏了一个细节,其实在示例代码中,与之前拿的基础例子在配置中有一个关键属性没有提到,就是下面这个配置: spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect 这里的spring.jpa.database-platform配置主要用来设置hibernate使用的方言。这里特地采用了MySQL5InnoDBDialect,主要为了保障在使用Spring Data JPA时候,Hibernate自动创建表的时候使用InnoDB存储引擎,不然就会以默认存储引擎MyISAM来...

什么是事务?我们在开发企业应用时,通常业务人员的一个操作实际上是对数据库读写的多步操作的结合。由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻辑并未正确的完成,之前成功操作的数据并不可靠,如果要让这个业务正确的执行下去,通常有实现方式: 记录失败的位置,问题修复之后,从上一次执行失败的位置开始继续执行后面要做的业务逻辑 在执行失败的时候,回退本次执行的所有过程,让操作恢复到原始状态,带问题修复之后,重新执行原来的业务逻辑 事务就是针对上述方式2的实现。事务,一般是指要做的或所做的事情,就是上面所说的业务人员的一个操作(比如电商系统中,一个创建订单的操作包含了创建订单、商品库存的扣减两个基本操作。如果创建订单成功,库存扣减失败,那么就会出现商品超卖的问题,所以最基本的最发就是需要为这两个操作用事务包括起来,保证这两个操作要么都...

前几日,Redis 创始人 Salvatore Sanfilippo 在他的个人博客(http://antirez.com/)上宣布将结束自己的 Redis 之旅! 博客全文如下,原文地址:http://antirez.com/news/133 Salvatore Sanfilippo 的退出,并不是对 Redis 本身的失望,而是由于日复一日的开源维护工作,让其感到疲惫与厌倦。对于 Redis 的后续维护工作将交给他的几位同事负责,而自己准备退居二线,后续将成为 Redis 实验室的一员,为 Redis 的未来提供创意与想法。而未来要做什么,Salvatore Sanfilippo 表示还未有明确的规划,但会用更多的时间去做自己真正想做的事,比如:写技术博客或录制视频等。 其实对于,Salvatore Sanfilippo 的退出,可能并不意外。在一年之前,他就曾经在其个人博客中...

前两天,我们已经介绍了关于JdbcTemplate的多数据源配置以及Spring Data JPA的多数据源配置,接下来具体说说使用MyBatis时候的多数据源场景该如何配置。 添加多数据源的配置先在Spring Boot的配置文件application.properties中设置两个你要链接的数据库配置,比如这样: spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/test1spring.datasource.primary.username=rootspring.datasource.primary.password=123456spring.datasource.primary.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.sec...

上一篇我们介绍了在使用JdbcTemplate来做数据访问时候的多数据源配置实现。接下来我们继续学习如何在使用Spring Data JPA的时候,完成多数据源的配置和使用。 添加多数据源的配置先在Spring Boot的配置文件application.properties中设置两个你要链接的数据库配置,比如这样: spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/test1spring.datasource.primary.username=rootspring.datasource.primary.password=123456spring.datasource.primary.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.seco...

在本系列之前的教程中,我们已经介绍了如何使用目前最常用的三种数据访问方式: JdbcTemplate Spring Data JPA MyBatis 下面我们将分三篇来介绍在这三种数据访问方式之下,当我们需要多个数据源的时候,该如何使用的配置说明。 添加多数据源的配置先在Spring Boot的配置文件application.properties中设置两个你要链接的数据库配置,比如这样: spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/test1spring.datasource.primary.username=rootspring.datasource.primary.password=123456spring.datasource.primary.driver-class-name=com.mys...

在 2.3.0 中对 Spring Boot 进行了相当重大的更改,这是使用 Gradle 而非 Maven 构建的项目的第一个版本。 Spring 的每个项目都独立的项目组在开发运营,在用户最常使用的白盒部分(例如 API 设计)保持一致性,对于用户不可见的黑盒部分,各个项目组选择自己适合工具没有统一的约定。 例如: 项目构建工具。Spring Framework 自 2012 年的 3.2.0 起就使用 Gradle 构建,而一年后开始使用 Spring Boot,此后不久又开始使用 Spring Cloud,两者都基于 Maven。 项目 构建工具 Spring Framework Gradle Spring Boot Maven Spring Cloud Maven 为什么要切换Spring Boot 团队考虑由 Maven 切换到 Gradle ...

最近真的是活久见了…不知道你是否也有碰到之前Fork过的国外开源项目,最近突然崩了,原因居然是好多项目都把master分支改为了main分支!更可怕的是修改原因居然是涉及种族歧视。用了那么多年的master,居然是种族歧视?到底发生了什么? 运动的发起这次的 master 改 main 的倡导运动发起自知名技术博主 Scott Hanselman。6月8日 Scott 发文呼吁将你的Git默认分支从master修改为main: Scott认为:IETF中所指出的Master-Slave是具有不恰当的隐喻,不论从技术上还是历史上,这个描述都不够准确,所以他希望可以修改关于主分支的描述词为 main,同时还给出了详细的修改方法。 更多详细倡导内容可见 Scott 的原文:https://www.hanselman.com/blog/EasilyRenameYourGitDefault...

今天在知乎上看到了这样一个问题:Spring Cloud 和 Dubbo哪个会被淘汰?看了几个回答,都觉得不在点子上,所以要么就干脆写篇小文瞎逼叨一下。 简单说说个人观点 我认为这两个框架大概率会长期都存在。 时至今日,这两个框架放到现在,已经不存在谁取代谁这一说了。由于Spring Cloud Alibaba的出现,Dubbo已经很好的融入到了Spring Cloud体系,所以围绕Spring Cloud生态的各种周边产品都是可以无缝整合到一起来玩的。 Dubbo无缝整合Spring Cloud生态是啥意思呢?主要两方面: 如果你原来是Dubbo用户,那么现在可以把Spring Cloud引入进来。轻松便捷地整合Spring Cloud的配置中心、注册中心以及诸如分布式跟踪等好用的周边产品来管理你的分布式服务集群,与其他Spring Cloud Netflix用户享受同等的生态优...

Spring Boot 2.3.0 已经发布,此版本主要更新内容包括: 依赖升级新版本核心组件依赖升级 Spring Data Neumann Spring HATEOAS 1.1 Spring Integration 5.3 Spring Kafka 2.5 Spring Security 5.3 Spring Session Dragonfruit 三方组件依赖 Cassandra Driver 4.6 Couchbase Client 3.0 Elasticsearch 7.6 Kafka 2.5 Micrometer 1.5 MongoDB 4.0 支持 Java 14spring boot 2.3.0 支持 Java 14 ,同样对 Java 11 、Java 8 提供兼容 Docker 容器支持spring boot 2.3.0 添加了部分功能用来帮助将Sprin...

Redis的作者在博客上宣布:Redis 6.0.0 稳定版发布了。 原文地址: http://antirez.com/news/132 那么,从RC1到今天,除了稳定之外,还有什么变化呢? 重新设计了客户端缓存,特别是放弃了caching slot,而只使用key names。 现在Redis支持这样一种模式:如果用于复制的RDB文件不再有用,它将立即删除。在某些环境中,最好不要将数据放在磁盘上,而只放在内存中。 acl在特点方面变得更好。首先,有一个新的ACL日志命令,它允许查看所有违反ACL的客户机、访问不应该访问的命令、访问不应该访问的密钥,或者验证尝试失败。日志实际上在内存中,因此每个外部代理都可以调用“ACL log”来查看发生了什么。这对于调试ACL问题非常有用。 改进了复制协议PSYNC2。Redis能够更频繁地部分重新同步,使副本和主副本找到公共偏移。 带有超时的...

虽然目前越来越多的国产优秀技术产品走出了国门,但是对于众领域的开发者来说,依然对于国外的各种基础资源依赖还是非常的强。所以,一些网络基本技能一直都是我们需要掌握的,但是速度与稳定性问题一直也都有困扰着大家。 所以,今天就给众 Java 开发者推荐两个提速神器:Maven的国内镜像和Spring的国内脚手架! Maven的国内镜像官网地址:http://maven.aliyun.com/ 对于每一个Java开发来说,拉不到依赖的情况一定都有碰到过。所以,强烈建议大家在安装开发环境的时候,就把阿里的国内镜像配置上,省去日后各种不必要的麻烦。 配置方法很简单,只需要找到Maven的setting.xml文件,然后在镜像配置中加入阿里云的仓库配置,具体如下: <mirrors> <mirror> <id>aliyunmaven</...

Spring Framework 5.2.5 发布了,此版本包含 50 多个修复和改进,还增加了对最近发布的 Java 14 的支持。 新特性 不在 MimeTypeUtils LRU 缓存中缓存多部分 mime 类型 在 JmsBootstrapConfiguration 中声明 proxyBeanMethods=false 使用 Java 14 记录会引发 java.lang.UnsupportedOperationException:此特性需要 ASM8_EXPERIMENTAL 非公共 Kotlin Bean 无法实例化 在 TomcatHttpHandlerAdapter 中避免 CoyoteInputStream 的 ClassCastException SynthesizedMergedAnnotationInvocationHandler.isVisible() 中...

有时候我们会在配置文件中设置一段文字说明,这时通常会出现两种需求: 文字中可能出现段落,希望在配置中按段落方式编写,显示打印的时候也能出现段落换行。 文字很长,为方便编辑,可能在配置文件中分段写,但是显示的时候不喜欢出现配置中的段落换行。 简单的说,就是: 配置与显示,都严格按段落展示 配置按段落,显示不需要按段落 假设,我们需要配置这样一段文字: I am a coder.My blog is didispace.com. 下面,就针对上面的两种情况来看看可以怎么来实现: 配置与显示,都严格按段落展示这个需求下,我们希望配置和显示都按句子换行,就是这样: I am a coder.My blog is didispace.com. 方法一:直接使用\n来换行这样写: string: "I am a coder.\n\ My blog is didispace...