Spring Boot 2系列(六十三):动态刷新环境配置和Bean属性值

Spring Boot 应用,修改了配置文件中的参数,不重启应用使修改生效,使注入配置参数的 Bean 更新生效。

要满足配置文件修改,就需要将Spring Boot的配置文件外部化,而不是在 Spring Boot Jar 包类路径下的文件。

Spring Boot的配置文件外部化支持两个路径:file:./file:./config/,即与 Jar 同级目录中的配置文件,和 Jar 所在目录的 config 子目录中的配置文件。

本文主要参考了 spring-cloud-context 的 refresh 接口的实现。

阅读更多

Java Web应用程序在JVM中的执行过程

Java Web 应用开发完成,编译打包后得到一个 War 包,将这个 war 放入到 Tomcat 容器路径下,启动 Tomcat 就可以通过 HTTP 访问这个 Web 应用了。

Java Web 应用是被 Tomcat 加载运行的,所以也称 Tomcat 为 Web 容器。

阅读更多

Go 语言的介绍

计算机一直在演化,伴随的编程语言也在演化,涉及编程相关复杂的概念也有不同的取舍。

学一门新的开发语言,有必要了解该门语言的一些优点或特性、在编程领域解决的问题。然后在实践中应用并深入体会它。

阅读更多

Spring Boot 2.3 版本发布说明

公司的 Spring Boot 还是 2.2.6 版本,计划升级到 2.6.x 版本,采用逐级升级测试影响范围,而不是跨版本升级。所以需要了解各个 次版本 的更新。此篇记录 Spring Boot 2.3 版本发布说明。

关注的几个更新。

  1. Web Starters不再包含Validation Starter,升级后需要单独引入。
  2. 升级了Jackson 版本,修改了 java.util.Date 和 java.util.Calendar 默认格式。
  3. 嵌入Servlet Web服务线程配置属性名更新。
  4. 增加对 Java 14 的支持,同样支持 Java 8 和 Java 11。
  5. 加载配置文件,增加支持位置通配符。
阅读更多

Spring Boot 2.7 版本发布说明

Spring Boot 2.7 Release Notes(版本发布说明),关注的几个更新。

  1. 自动配置注册的加载从 spring.factories 迁移到 AutoConfiguration下的imports
  2. Spring MVC 的 requestMappingHandlerMapping Bean 不再默认为主,存在多个时注入,需要指定或注入集合。
  3. 引入了新的 @AutoConfiguration 注解,作用在 AutoConfiguration.imports文件中列出的自动配置类。
  4. 增加了一些测试相关的注解、注解属性、注解属性源。如,@SpringBootTest,@DataCouchbaseTest,@DataElasticsearchTest。
  5. 增加支持 Redis Sentinel 进行身份验证的用户名,spring.redis.sentinel.username
阅读更多

异步编程的几种实现方式

异步编程是实现程序并发、依赖解耦的一种方式。异步的本质是开启一个新的线程来执行。

异步:即整个业务中的某些逻辑交给不同的线程异步处理,不用等待异步线程的结果就可返回。

同步:即一条线程干到底,在没结束没返回之前不能干其它事情,必须在所有逻辑处理完才能返回。

阅读更多

负载均衡的五种实现方案

负载均衡(Load Balance),指将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行。

通过负载均衡,可以将高并发的请求分发到由多台应用服务器组成的一个服务器集群上,从而利用多台服务器资源处理高并发下的计算压力。

负载均衡大的技术方向分硬件负载均衡设计 和 软件负载均衡,硬件设备通常比较贵成本较高,这里主要讲软件实现负载 均衡的实现方案。

阅读更多