如何提前知晓所需的Spring Boot配置属性?以PostgreSQL数据库连接场景为例
我太懂这种困惑了——刚上手Spring Boot的时候,每次要配置新功能都得翻半天网上的例子,总怕漏了关键配置,还总纳闷:为啥别人都知道要配这些,我却找不到一个集中的地方查清楚?其实Spring Boot本身就自带了好几套让你提前知晓配置项的方法,根本不用瞎摸索。
一、靠IDE的智能提示直接“get”所有选项
这是最省心的方法!Spring Boot的所有官方starter都会提供配置元数据,IDEA、Eclipse这类主流IDE都能识别这些元数据。比如你在application.properties或者application.yml里敲spring.datasource.,IDE会立刻弹出所有和数据源相关的配置项,每个选项还会附带直白的描述:比如spring.datasource.url会显示“JDBC URL of the database”,spring.datasource.username会显示“Login username of the database”——连默认值、数据类型都给你列得清清楚楚,完全不用靠记忆或者瞎找例子。
这些提示的内容,其实来自starter包里的META-INF/spring-configuration-metadata.json文件,你直接打开spring-boot-starter-jdbc或者spring-boot-autoconfigure的jar包就能看到,里面把每个配置项的用途、约束都写得明明白白。
二、查Spring Boot内置的通用配置清单
Spring Boot有一个专门整理所有常用配置项的章节,叫“Common Application Properties”,它把配置按类别(数据源、Web、缓存、消息队列等)分好了类,每个配置项的默认值、适用场景都写得清清楚楚。你不用去外部网站找,其实在你引入的spring-boot-autoconfigure依赖里,或者本地的Spring Boot文档包中就能找到这部分内容——针对数据源的配置,从最基础的url、username,到连接池的最大连接数、超时时间,所有你可能用到的配置都列在这里了。
三、看自动配置类的源码找答案
Spring Boot的自动配置逻辑全在spring-boot-autoconfigure这个依赖里,比如数据源的自动配置类是DataSourceAutoConfiguration。你点进这个类的源码,会发现它用到了@ConfigurationProperties注解,指向的是DataSourceProperties类——这个类里的每个字段,就对应一个配置项。
比如DataSourceProperties类里有url、username、password这些属性,每个字段上面还有@Description注解,直接告诉你这个配置是干嘛的:
@Description("Login password of the database.") private String password;
你甚至能从源码里看到,如果某个配置项没设置,Spring Boot会用什么默认值,或者会触发什么逻辑——比如如果你没配spring.datasource.url,它会尝试用嵌入式数据库的默认配置,但显然这不适用于你的PostgreSQL场景,所以必须手动指定。
回到你的PostgreSQL场景
你需要配置的spring.datasource.url、username、password,本质上就是DataSourceProperties类里定义的核心属性,DataSourceAutoConfiguration会在检测到PostgreSQL驱动类存在时,自动把这些配置绑定到你的数据源实例上。只要你用上面的任意一种方法,都能提前知道这些配置是必须的,而不是靠看例子才后知后觉。
内容来源于stack exchange

