Spring Boot 构造器参数绑定,越来越强大了!

简介: Spring Boot 构造器参数绑定,越来越强大了!

image.png在之前的文章:Spring Boot读取配置的几种方式,我介绍到 Spring Boot 中基于 Java Bean 的参数绑定,在一个 Java Bean 类上用 @ConfigurationProperties 注解标识(更多 Spring Boot 的教程请关注公众号 "Java技术栈" 在后台回复:boot)。


前几天,Spring Boot 2.2.0 正式发布了:Spring Boot 2.2.0 正式发布,支持 JDK 13!,文中有提到基于构造器的参数绑定,那么今天栈长就带大家来实践一下,到底怎么用,有什么用。

废话不说,先上示例代码:

import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.context.proper

配置文件内容:

tom:  name: Tom  sex: man  age: 18  entry-time: 2012-12-12 12:00:00

参数结果输出:


TomProperties{name='Tom', sex='man', age=18, country='China', entryTime=Wed Dec 12 12:00:00 CST 2012}


通过构造器的参数绑定,其实就是在 @ConfigurationProperties 注解的基础上再添加一个 '@ConstructorBinding' 注解。


@ConstructorBinding几点总结:


1、用了 @ConstructorBinding 这个注解,就标识这个类的参数优先通过带参数的构造器注入,如果没有带参数的构造器则再通过  setters  注入;


怎么判断是通过 setters 注入还是构造器注入,请看这个类的源码:


org.springframework.boot.context.properties.ConfigurationPropertiesBean.BindMethod


2、当 @ConstructorBinding 用在类上时,该类只能有一个带参数的构造器;如果有多个构造器时,可以把 @ConstructorBinding 直接绑定到具体的构造方法上;


3、成员变量可以是 final 不可变;


4、支持该类的内部类构造器注入的形式;


5、支持默认值 @DefaultValue、@DateTimeFormat 时间格式等注解配合使用;


6、需要配合 @ConfigurationProperties、@EnableConfigurationProperties 注解使用;


7、不支持像 @Component、@Bean、@Import 等方式创建 bean 的构造器参数绑定;

来看下它的源码:

@Target({ElementType.TYPE, ElementType.CONSTRUCTOR})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Const

什么参数都没有,可以说明,它就是起到一个构造器参数绑定的标识作用。

相关文章
|
6天前
|
前端开发 Java
SpringBoot之数组,集合,日期参数的详细解析
SpringBoot之数组,集合,日期参数的详细解析
16 0
|
6天前
|
Java 数据库连接 Spring
Spring Boot命令行启动添加参数
Spring Boot命令行启动添加参数
|
6天前
|
安全 Java 开发者
深入理解Spring Boot配置绑定及其实战应用
【4月更文挑战第10天】本文详细探讨了Spring Boot中配置绑定的核心概念,并结合实战示例,展示了如何在项目中有效地使用这些技术来管理和绑定配置属性。
16 1
|
5天前
|
Java
Springboot 使用自定义注解结合AOP方式校验接口参数
Springboot 使用自定义注解结合AOP方式校验接口参数
Springboot 使用自定义注解结合AOP方式校验接口参数
|
6天前
|
Java 关系型数据库 MySQL
【JavaEE】Spring事务-@Transactional参数介绍-事务的隔离级别以及传播机制
【JavaEE】Spring事务-@Transactional参数介绍-事务的隔离级别以及传播机制
9 0
|
6天前
|
前端开发 Java
SpringBoot之自定义注解参数校验
SpringBoot之自定义注解参数校验
19 2
|
6天前
|
Java 微服务 Spring
Spring Boot中获取配置参数的几种方法
Spring Boot中获取配置参数的几种方法
22 2
|
6天前
|
开发框架 Java 开发者
Spring Boot接收参数的多种方式
【4月更文挑战第20天】
13 0
|
6天前
|
JSON 前端开发 Java
SpringBoot之JSON参数,路径参数的详细解析
SpringBoot之JSON参数,路径参数的详细解析
18 0
|
6天前
|
前端开发 Java
SpringBoot之实体参数的详细解析
SpringBoot之实体参数的详细解析
15 0