@ConfigurationProperties(prefix = "spring.datasource")
在编写项目代码时,我们要求更灵活的配置,更好的模块化整合。在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 application.yml 文件中,通过
@ConfigurationProperties注解,我们可以方便的获取这些参数值。
如下:application.yml的配置如下
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver username: root password: Cwptxt$2017$ url: jdbc:mysql://localhost:3306/ssm_crud?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8 type: com.alibaba.druid.pool.DruidDataSource
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceProperties implements BeanClassLoaderAware, InitializingBean {
private String driverClassName;
private String url;
private String username;
private String password;
public String getDriverClassName() {
return this.driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUrl() {
return this.url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
}
通过在类 DataSourceProperties加注解@ConfigurationProperties(prefix = "spring.datasource")就可以把"spring.datasource"下对应的变量值自动的给类相同的变量注入值。
@ConfigurationProperties 的基本用法非常简单:我们为每个要捕获的外部属性提供一个带有字段的类。请注意以下几点:
- 前缀定义了哪些外部属性将绑定到类的字段上
- 根据 Spring Boot 宽松的绑定规则,类的属性名称必须与外部属性的名称匹配
- 我们可以简单地用一个值初始化一个字段来定义一个默认值
- 类本身可以是包私有的
- 类的字段必须有公共 setter 方法



