Spring Boot 2.6新特性:使用Java 17的Record作为配置属性

开发 后端
record是一种特殊类型的类声明,目的是为了减少样板代码。record引入的主要目的是快速创建数据载体类。

Spring Boot 3.0的基线版本是Java 17,Spring Boot 3.0版本将全面对Java 17的支持。较新版本的2.x的Spring Boot版本也可以使用Java 17的特性。

本文介绍Spring Boot 2.6对Java 17支持的一个新特性,使用Java 17的Record来做为Spring Boot的配置属性(ConfiguartionProperties)。

什么是Record

record是一种特殊类型的类声明,目的是为了减少样板代码。record引入的主要目的是快速创建数据载体类。

这种类的主要目的就是在不同的模块或者层之间包含并传递数据,它们表现为POJO(Plain Old Java Objects)和DTO(Data Transfer Objects)。

record声明有专门的的关键字record,我们比较下一个简单的POJO类和record上语法的区别:

POJO类:

@Data
public class Point {
private String x;
private String y;
}

record:

public record Point(String x, String y) {
}

Spring Boot的配置属性(Configuration Properties)类也是一个简单POJO。

用POJO类作为Configuration Properties

新建演示项目,注意添加Spring Configuration Processor

演示的Configuration Properties,首先我们使用常规的Java类来演示

@ConfigurationProperties(prefix = "author")
@Data
public class AuthorProperties {
private String firstName;
private String lastName;
}
  • application.properties中的配置
author.firstName=wang
author.lastName=yunfei
  • 注册Configuration Properties为Bean,并使用
@SpringBootApplication
@EnableConfigurationProperties(AuthorProperties.class)//将AuthorProperties注册为Bean
@Slf4j
public class RecordConfigurationPropertiesApplication {

public static void main(String[] args) {
SpringApplication.run(RecordConfigurationPropertiesApplication.class, args);
}

@Bean //注入并使用AuthorProperties的Bean
CommandLineRunner commandLineRunner(AuthorProperties authorProperties){
return args -> {
log.info(authorProperties.toString());
};
}
}
  • 运行程序

用Record作为Configuration Properties

我们只需要将AuthorProperties类修改为record即可:

@ConfigurationProperties(prefix = "author")
public record AuthorProperties(String firstName, String lastName) {
}

运行结果和上面保持一致。

文章出自:​​爱科学的卫斯理​​,如有转载本文请联系爱科学的卫斯理今日头条号。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2012-05-18 14:36:50

Fedora 17桌面环境

2018-05-30 15:10:24

Spring BootList类型

2024-01-11 13:21:53

开发代码

2022-10-26 07:14:25

Spring 6Spring业务

2018-06-06 14:30:38

Spring BootApplication事件

2022-11-09 07:49:12

Records类声明代码

2017-03-23 09:29:06

2009-06-18 15:40:07

Spring Batc

2020-11-20 07:54:22

Java 特性语句

2009-06-24 09:22:04

Spring2.5新特

2022-09-22 07:03:15

Java 18LTSOracle

2009-08-24 17:55:44

C#3.0新特性

2009-06-15 16:15:37

Spring2.0新特

2024-02-04 15:58:53

C++ 17编程代码

2012-05-21 14:16:36

Fedora17新特性

2022-07-18 09:41:29

属性类型安全Spring

2021-04-07 08:00:00

Java开发工具

2014-08-21 10:34:11

Java 9Java

2021-02-22 11:51:15

Java开发代码

2023-11-01 15:07:51

环境配置方式
点赞
收藏

51CTO技术栈公众号