你知道 @Async 是怎么让方法异步执行的吗?
在阅读本文之前,你可以通过 Creating Asynchronous Methods 指导来体验下创建异步方法的使用方式。
为什么要写这篇文章,本质上对于这些 Spring 已经封装好的能力,并不需要去关注它底层到底是怎么玩的,比如 @Async
,你肯定可以猜到对于打了这个注解的方法(或者类),在执行这个方法(或者类下所有方法)时,Spring 框架会将当前方法丢进到一个单独的线程池中去执行,以达到方法异步执行的目的。
在阅读本文之前,你可以通过 Creating Asynchronous Methods 指导来体验下创建异步方法的使用方式。
为什么要写这篇文章,本质上对于这些 Spring 已经封装好的能力,并不需要去关注它底层到底是怎么玩的,比如 @Async
,你肯定可以猜到对于打了这个注解的方法(或者类),在执行这个方法(或者类下所有方法)时,Spring 框架会将当前方法丢进到一个单独的线程池中去执行,以达到方法异步执行的目的。
此问题背景产生于近期需要上线的一个功能的埋点;主要表现就是在应用启动之后的一段时间内,内存使用一直呈现递增趋势。
本文源自近期项目中遇到的问题, bug 总是出现在你自以为是的地方…
RocketMQ 简介:Apache RocketMQ是一个分布式消息传递和流媒体平台,具有低延迟、高性能和可靠性、万亿级容量和灵活的可伸缩性。它提供了多种功能,具体参考: https://github.com/apache/rocketmq 。
本篇主要是记录如何使用 SpringBoot 所提供的 ErrorController 这个接口能力;其内置了一个 BasicErrorController 对异常进行统一的处理,当在 Controller 发生异常的时候会自动把请求 forward 到 /error 这个请求 path 下(/error 是 SpringBoot 提供的一个默认的mapping)。BasicErrorController 提供两种返回错误:1、页面返回;2、json 返回。
一家之言,如有任何错误,请批评指出,不胜感激
本篇主要来讨论研究两个问题:1、什么自动配置,2、如何编写自动配置
在使用 Spring
作为项目开发框架的过程中,当需要集成某个组件时,通常需要大量的 xml
配置才可以让项目工程 run
起来,下面先以 mybatis
为例,来看下如何使用 mybatis-Spring
模块,需要哪些必不可少的依赖和配置。
本文主要针对 spring.profiles.active
、spring.config.location
以及 spring.config.additional-location
的作用机制及优先级问题进行实践对比。
注:本文基于 SpringBoot 2.1.11 版本
说到配置,你能想到的是什么?
在日常的开发和运维过程中,可以说配置都是及其重要的,因为它可能影响到应用的正常启动或者正常运行。相信在之前 Spring xml 时代,很多人都会被一堆 xml 配置折腾的够呛,除此之外,还有像数据库连接配置、缓存配置、注册中心配置、消息配置等等,这些相信大家都不会陌生。
配置对于开发人员或者运维人员来说可以比喻成一把”钥匙“,可以通过这把”钥匙“让我们的程序 run 起来,可以通过这把 ”钥匙“ 开启或者关闭应用程序的某一个功能。那么为什么会需要配置,对于一个应用来说,配置的意义又是什么呢?
继续承接上一篇 SpringBoot 系列-启动过程分析,本篇围绕一个 bean 的生命周期,对 bean 进行一些修改和扩展。
Spring Boot 使用 Commons Logging 进行所有内部日志记录,但保留底层日志实现。为 Java Util Logging、Log4J2 和 Logback 提供了默认配置。在每种情况下,loggers 都预先配置为使用 console 输出,并且也提供可选的文件输出。
默认情况下,如果使用 “starters”,则使用 Logback 进行日志记录。还包括适当的 Logback 路由,以确保使用 Java Util 日志记录、Commons 日志记录、Log4J 或 SLF4J 的依赖库都能正常工作。