0%

Spring 注解

和 DI 相关的注解

@Autowired

可以在构造函数、Setter 方法或字段注入中使用 @Autowired 注解,Spring 会解析并注入依赖。
构造函数注入:

1
2
3
4
5
6
7
8
class Car {
Engine engine;

@Autowired
Car(Engine engine) {
this.engine = engine;
}
}

Setter 注入:

1
2
3
4
5
6
7
8
class Car {
Engine engine;

@Autowired
void setEngine(Engine engine) {
this.engine = engine;
}
}

字段注入:

1
2
3
4
class Car {
@Autowired
Engine engine;
}

@Autowired 有一个名为 required 的 boolean 参数,默认值为 true。当 Spring 找不到合适的 Bean 进行注入时,它会控制 Spring 的行为。当值为 true 时,会抛出异常,反之则不会。
注意,如果使用构造函数注入,所有构造函数参数都是 必须的 。
从 Spring 4.3 开始,除非声明了至少两个构造函数,否则不需要用 @Autowired 明确注解构造函数。

阅读全文 »

Knife4j快速入门

1 概述

Knife4j是一个用于生成和展示API文档的工具,同时它还提供了在线调试的功能,下图是其工作界面。

了解

  • Knife4j有多个版本,最新版的Knife4j基于开源项目springdoc-openapi,这个开源项目的核心功能就是根据SpringBoot项目中的代码自动生成符合OpenAPI规范的接口信息。
  • OpenAPI规范定义接口文档的内容和格式,其前身是Swagger规范。
    阅读全文 »

Redis快速入门

1 Redis概述

  1. Reids定义

    Redis(Remote Dictionary Server)是一个基于内存的键值对存储系统,常用作缓存服务。由于Reids将数据都保存在内存中,因此其读写性能十分惊人,同时,为保证数据的可靠性,Redis会将数据备份到硬盘上,用于故障发生时的数据恢复。

  2. Redis特点

    • 高性能:Redis主要将数据存储在内存中,因此读写速度非常快,适合对速度有较高要求的场景。
    • 支持多种数据结构:Redis中键值对的值(Value)支持多种数据结构,如字符串、哈希表、列表、集合等,这使得它可以应用于多种不同的场景。
    • 持久化:Redis可以通过定期快照或者实时记录写操作日志的方式将内存中的数据持久化到硬盘,确保数据在重启后不会丢失。
    • 灵活的数据过期策略:可以为每个键设置过期时间,一旦过期,Redis会自动删除。
  3. Redis应用场景

    Redis最为常见的一个应用场景就是用作缓存,缓存可以显著提升访问速度,降低数据库压力。

    阅读全文 »

MinIO快速入门

1 MinIO核心概念

下面介绍MinIO中的几个核心概念,这些概念在所有的对象存储服务中也都是通用的。

  • 对象(Object)

    对象是实际的数据单元,例如我们上传的一个图片。

  • 存储桶(Bucket)

    存储桶是用于组织对象的命名空间,类似于文件夹。每个存储桶可以包含多个对象。

  • 端点(Endpoint)

    端点是MinIO服务器的网络地址,用于访问存储桶和对象,例如 http://192.168.10.101:9000

    注意:

9000 为MinIO的API的默认端口,前边配置的 9001 以为管理页面端口。

  • Access Key 和 Secret Key

    Access Key是用于标识和验证访问者身份的唯一标识符,相当于用户名。

    Secret Key是与Access Key关联的密码,用于验证访问者的身份。

    阅读全文 »

MyBatis Plus快速入门

1、概述

MyBatis-Plus(简称 MP)是一个MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。其突出的特性如下:

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,提供了大量的通用的CRUD方法,因此可以省去大量手写sql的语句的工作。
  • 条件构造器:提供了强大的条件构造器,可以构造各种复杂的查询条件,以应对各种复杂查询。
  • 内置分页插件:配置好插件之后,写分页等同于普通 List 查询,无需关注分页逻辑。

下面通过一个简单案例快速熟悉MyBatis Plus的基本使用

阅读全文 »

为什么使用全局异常处理

在开发时,需要对可能有异常的Controller层方法增加try-catch逻辑,而使用Spring MVC提供的全局异常处理功能,可以将所有处理异常的逻辑集中起来,进而统一处理所有异常,可以使代码更容易维护。
具体用法如下,详细信息可参考官方文档

阅读全文 »

1. Linux文件系统目录结构

理解和熟悉Linux系统的文件系统目录结构,对于有效的管理和定位文件十分重要。Linux文件系统的目录结构如下图所示:

image-20250122170306448

其中各目录的作用如下表所示

目录 说明 作用
/ 根目录 根目录是整个文件系统的起点,所有其他目录和文件都位于根目录之下。
/home 家目录 每个用户的个人目录都位于这个目录下,通常以用户名命名。例如,用户john的主目录路径为/home/john
/root root用户的家目录 保存root用户的个人数据
/boot 引导文件所在目录 保存系统启动时所需的各种文件
/usr User System Resources的简写,说法不唯一 存放用户可用的软件和程序文件,也包括了一些共享的数据和库文件。
/bin binary的简写 存放系统的基本命令(如ls、cp等)和其余可执行文件。
/sbin system binary的简写 存放系统管理和维护方面的二进制文件。
/etc etcetera的简写 存放系统的配置文件,包括各种程序的配置文件和系统的全局配置文件。
/var variable的简写 存放系统运行时产生的可变数据,如日志文件、数据库文件等。
/opt optional的简写 存放一些可选的软件包,通常由用户自行安装。
/tmp temporary的简写 存放临时文件,系统会定期清理该目录
阅读全文 »