# Spring Boot 2.6新特性：使用Java 17的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类：

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

record：

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

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

## 用POJO类作为Configuration Properties

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


![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1667469249411/eRsGHsGyk.png align="left")

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

```java
@ConfigurationProperties(prefix = "author")
@Data
public class AuthorProperties {
    private String firstName;
    private String lastName;
}
```

- application.properties 中的配置

```java
author.firstName=wang
author.lastName=yunfei
```

- 注册Configuration Properties为Bean，并使用

```java
@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());
      };
   }
}
```

- 运行程序


![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1667469364736/Dgpt_sCvQ.png align="left")

## 用Record作为Configuration Properties

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

```java
@ConfigurationProperties(prefix = "author")
public record AuthorProperties(String firstName, String lastName) {
}
```
运行结果和上面保持一致。

感谢对我的书《从企业级开发到云原生微服务：Spring Boot实战》的支持。

头条原文地址：[https://www.toutiao.com/article/7159057842337530371/](https://www.toutiao.com/article/7159057842337530371/)
