Java异常处理策略:重试
不限次数重试
while(true) {
try {
// 执行可能抛出异常的操作
break;
} catch (Exception e) {
log.info("尝试失败,当前重试次数:" + i + " -----异常:" + e);
}
}
限制次数重试
int i = 0;
int tryTimes = 10;
while(true) {
try {
// 执行可能抛出异常的操作
break;
} catch (Exception e) {
if (i == tryTimes - 1) {
...
YAML配置中引用其它变量
值引用
default-db:
port: 3306
user-db:
# 可增加默认值
port: ${default-db.port:3307}
实际效果
default-db:
port: 3306
user-db:
port: 3306
锚点引用所有键值对
default-db: &default-db-config
host: 127.0.0.1
port: 3306
user-db:
<<: *default-db-config
实际效果
default-db:
host: 127.0.0.1
port: 3306
user-db:
host: 127.0.0...
Spring Boot条件化注册bean
项目配置属性的值作为条件
配置的属性满足某个值,才注册这个bean
language-trainer:
login:
oauth-enabled: false
@Bean
@ConditionalOnProperty(name = "language-trainer.login.oauth-enabled", havingValue = "true")
Spring Boot自定义配置属性
代码实例
Maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
yaml定义自定义属性
language-trainer:
login:
oauth-enabled: false
定义关联属性类
@ConfigurationProperties(pr...
Java四种引用类型
概述
Java引用类型的概念主要是为了管理对象的生命周期而存在的,引用类型主要有四种,分别为强引用、软引用、弱引用和虚引用,其中强引用即Java的原生引用,软引用、弱引用和虚引用都需要通过一个Reference对象来表示,Reference对象中的referent属性指向这个引用需要指向的对象
引用的使用
强引用
String strongReference = new String("text");
System.out.println(strongReference);
软引用
SoftReference<String> softReference = new SoftReference<>(new String("text"));
Sys...
Spring IoC容器简述
IoC
IoC,Inversion of Control,控制反转。可理解为原来要用到的bean需要自己创建,也就是说控制bean的创建过程。而引入IoC技术后,bean并不由使用者创建,创建的控制权转移到IoC容器
DI
DI,Dependency Injection,依赖注入。更强调bean之间依赖关系的处理。实际上IoC容器在创建bean期间,必然要处理bean之间的依赖关系
IoC Service Provider
IoC容器的抽象概念,负责业务对象的构建管理和业务对象间的依赖绑定。Spring IoC容器的核心部分就是一个IoC Service Provider
IoC Service Provider实际功能示意图
Spring IoC容器的实现
...
单元测试简介
概念
单元测试中的单元,意味着需要测试的对象为可测试的最小单位,一般以一个方法为测试对象
过程
进行单元测试通常需要以下步骤
搭建测试环境
准备测试用例
准备测试对象
调用测试方法
断言调用结果
相关术语
单元测试Test double详解
测试用例设计
设计测试用例,通常需要考虑
正常用例
边界用例
异常用例
特殊值用例
例子
有以下方法,功能为实现对两个整数的求商
public int divide(int a, int b) {
return a / b;
}
正常用例
divide(8, 2) = 4
divide(-8, 4) = -2
divide(-10, -2) = 5
...
Java子类成员变量覆盖父类成员变量
成员变量覆盖
父类TestA
public class TestA {
public String name = "A";
public void out() {
System.out.println(name);
System.out.println(this.name);
}
}
子类 TestB
public class TestB extends TestA {
private String name;
@Test
public void test() {
this.name = "B";
System.out.println(name);
...
Spring Cloud Gateway使用
项目依赖
项目是Spring Cloud项目,且使用Nacos作为注册中心。Spring Cloud版本为2021.0.5,Spring Cloud Alibaba版本为2021.0.5.0
Spring Cloud项目起步配置
Nacos使用
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<gro...
332 post articles, 34 pages.