📄🦌🙌🐟🏖️
日志记录
Where there is a where there is a way
随机文章
按住 Shift 横向滚动
热门文章
按住 Shift 横向滚动
拆分微服务

拆分微服务

**摘要:** 本文介绍了微服务架构的基本概念与优势。单体架构在项目规模增大时存在团队协作成本高、发布效率低、可用性差等问题。微服务通过将功能模块拆分为独立服务,实现单一职责、团队自治和服务自治,有效解决了上述问题。SpringCloud为微服务开发提供了全面解决方案。服务拆分需考虑时机——初创项目宜先采用单体架构快速验证,后期再拆分;大型项目则直接采用微服务架构。拆分原则为高内聚、低耦合,可按纵向(按功能模块)或横向(抽取公共业务)方式进行。工程结构可选独立工程或Maven聚合,后者便于统一依赖管理。拆分后将模块代码、配置、数据库独立部署,服务间通过HTTP/REST或RPC进行调用。

Jackson详解

Jackson详解

Jackson是Java中广泛使用的JSON处理框架,是SpringBoot默认的序列化与反序列化工具。它具备高性能、易用、灵活和支持多种数据格式等特点,核心模块包括`jackson-databind`、`jackson-core`和`jackson-annotations`。文章详细介绍了Jackson的快速入门、序列化与反序列化API(支持普通对象、嵌套对象、集合、日期等),以及自定义序列化器/反序列化器。此外,还介绍了树模型(JsonNode)用于动态操作JSON,以及丰富的注解体系:通用注解(如@JsonIgnore)、序列化注解(如@JsonInclude、@JsonGetter)、反序列化注解(如@JsonSetter、@JsonCreator)等,帮助开发者灵活控制JSON处理行为。

fastjson2

fastjson2

FASTJSON 2是阿里巴巴推出的高性能Java JSON库,相比FASTJSON 1性能大幅提升,并解决了autoType的安全性问题。它支持JDK 11/17、Record、GraalVM Native-Image,提供完善的JSONPath(兼容SQL:2016)和JSON Schema,新增二进制格式JSONB,同时支持Kotlin和Android 8+。基础使用包括:通过Maven添加依赖,使用JSONObject和JSONArray创建、取值、遍历及增删改操作;支持JSON对象/数组与字符串、JavaBean、Map、List的互转(包括字节数组转换),并提供格式化输出功能。SpringBoot集成可参考官方文档。

Log4j2

Log4j2

Log4j2是log4j1.x的升级版,具有异常处理、性能提升、自动重载配置和无垃圾机制等优点。配置采用XML、JSON等格式(不再支持properties),包含Logger(记录器)、Appender(输出目的地,如Console、File、RollingFile)和Layout(日志布局)三大组件。XML配置中,Configuration节点可设置日志级别和自动重载间隔;Appenders定义输出方式,支持基于大小、时间或两者的滚动策略;Loggers中Root指定根日志,Logger可针对特定包单独配置。快速入门需引入spring-boot-starter-log4j2依赖,设置logging.config,编写配置文件,使用LogManager或@Slf4j获取日志对象输出。此外,还支持过滤器(ThresholdFilter、LevelRangeFilter)和多种布局格式(JSON、XML、HTML、CSV)。

LogBack框架

LogBack框架

**Logback** 是由 Log4j 创始人设计的高性能日志框架,作为 SLF4J 的原生实现,具备异步日志、灵活配置、多种日志级别(TRACE~FATAL)、多种输出方式(控制台、文件、邮件等)及丰富插件等特点。其配置文件通常为 XML 格式,核心结构包含 `appender`(输出目的地)、`logger`(记录器)和 `root`(根记录器)。Logger 支持层级继承与级别控制;Appender 包括控制台(ConsoleAppender)、文件(FileAppender)及滚动文件(RollingFileAppender),并支持基于时间/大小的滚动策略。常用过滤器有 LevelFilter 和 ThresholdFilter。与 Spring Boot 集成方便,支持 Lombok 注解简化使用。整体上,Logback 是 Java 生态中强大且易用的日志解决方案。

Log4j

Log4j

Log4j由三个核心组件构成:**Loggers**(日志级别控制)、**Appenders**(输出目标,如控制台、文件等)和**Layouts**(输出格式)。日志级别从低到高为DEBUG、INFO、WARN、ERROR、FATAL,输出时只打印级别大于等于设定值的日志。 **快速入门**需引入log4j依赖,创建`log4j.properties`配置文件,在代码中通过`Logger.getLogger()`获取记录器并调用`info()`等方法输出日志。配置文件可设置根日志级别、Appender类型(如ConsoleAppender、FileAppender、DailyRollingFileAppender等)及布局格式(如PatternLayout)。通过`ConversionPattern`自定义输出格式,包括时间、级别、类名、行号等信息。最终实现灵活、可控的日志记录。

日志框架概述

日志框架概述

本文介绍了日志技术及其体系结构。日志技术能够将系统执行信息记录到控制台、文件或数据库中,并支持以开关形式控制日志启停,无需修改源代码。在体系结构方面,Log4j、Logback 和 Log4j2 均可通过 SLF4J 作为日志门面使用,SLF4J 提供统一接口,使不同日志实现框架之间能够方便地互相切换,而不影响应用程序代码。

Spring Validation

Spring Validation

本文介绍了Java数据校验框架的背景与演变:传统Web项目中,字段校验与业务逻辑混合会导致代码臃肿且难以维护。为解决此问题,Java社区先后引入JSR-303(Bean Validation 1.0)和JSR-380(Bean Validation 2.0),Hibernate Validator作为参考实现,Spring Boot通过自动配置简化了集成。快速入门步骤包括:引入`spring-boot-starter-validation`依赖;在实体类字段上使用`@NotNull`、`@NotBlank`、`@Size`等注解声明校验规则;在Controller方法参数前加`@Valid`或`@Validated`启用校验;通过全局异常处理器(如`@ControllerAdvice`)捕获`MethodArgumentNotValidException`和`ConstraintViolationException`并返回统一响应。文章还列举了常用校验注解:基本校验(`@Null`、`@NotEmpty`等)、数字校验(`@Min`、`@Max`、`@Positive`等)、日期校验(`@Past`、`@Future`等)、字符串校验(`@Email`、`@Pattern`)及自定义注解的实现方法。

Lombok详解

Lombok详解

Lombok是Java开源库,通过注解替代繁琐的getter/setter等代码,提升代码整洁度。常用注解包括:@Getter/@Setter自动生成访问方法;@ToString生成toString();@EqualsAndHashCode生成equals和hashCode;@NoArgsConstructor/@AllArgsConstructor/@RequiredArgsConstructor生成构造方法;@Data组合上述功能;@Builder提供建造者模式;@Singular搭配@Builder处理集合字段;@Log系列自动添加日志对象;@NonNull检查空值;@Accessors定制方法风格(fluent/chain)。使用Lombok可减少样板代码,提高开发效率。

Junit单元测试

Junit单元测试

本文介绍了Java单元测试的概念及JUnit框架的使用。单元测试针对单个Java方法编写测试代码,能确保方法运行正常、便于修改验证、作为示例代码并可自动化运行。JUnit是Java最广泛的单元测试框架,支持断言验证期望结果,常用IDE集成,可方便组织运行测试。核心步骤:定义测试类(建议名“被测试类Test”)、测试方法(返回值void、空参,加@Test注解)。断言方法包括assertEquals、assertTrue等,用于判断结果。其他注解:@Before/@After(每个测试前后执行)、@BeforeClass/@AfterClass(整个类前后执行一次,需静态)、@Ignore(忽略测试)。JUnit5新增@BeforeEach等注解,功能类似。

© 2026 日志记录