单独放到一个类当中
把 jdbc.properties
名称改为 application.properties
内容还是和之前的内容一样的
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
jdbc.username=root
jdbc.password=root
创建一个类,名为 JDBCPropertis
,把所有属性添加到类当中,在类上添加相关注解
/**
* @author BNTang
*/
(prefix = "jdbc")
public class JDBCProperties {
String url;
String driverClassName;
String username;
String password;
}
然后在我们之前定义好的 JdbcConfig 中直接使用
/**
* @author BNTang
*/
(JDBCProperties.class)
public class JdbcConfig {
public DataSource dataSource(JDBCProperties jdbcProperties) {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
dataSource.setUrl(jdbcProperties.getUrl());
dataSource.setUsername(jdbcProperties.getUsername());
dataSource.setPassword(jdbcProperties.getPassword());
return dataSource;
}
}
启动项目访问控制器即可,测试方式和之前文章中的一样。
也可以使用属性注入的方式, 也可以使用构造方法的形式
属性注入的方式
/**
* @author BNTang
*/
(JDBCProperties.class)
public class JdbcConfig {
private JDBCProperties jdbcProperties;
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(this.jdbcProperties.getDriverClassName());
dataSource.setUrl(this.jdbcProperties.getUrl());
dataSource.setUsername(this.jdbcProperties.getUsername());
dataSource.setPassword(this.jdbcProperties.getPassword());
return dataSource;
}
}
构造方法的方式
/**
* @author BNTang
*/
(JDBCProperties.class)
public class JdbcConfig {
private final JDBCProperties jdbcProperties;
public JdbcConfig(JDBCProperties jdbcProperties) {
this.jdbcProperties = jdbcProperties;
}
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(this.jdbcProperties.getDriverClassName());
dataSource.setUrl(this.jdbcProperties.getUrl());
dataSource.setUsername(this.jdbcProperties.getUsername());
dataSource.setPassword(this.jdbcProperties.getPassword());
return dataSource;
}
}
直接注入
直接在方法上添加注解
注解名称 |
作用 |
@ConfigurationProperties |
声明要注入的属性前缀,SpringBoot 会自动把相关属性通过 set 方法进行注入 |
如下就会通过 set 方法将相关的属性进行注入到 DataSource 中,如下所示:
/**
* @author BNTang
*/
public class JdbcConfig {
(prefix = "jdbc")
public DataSource dataSource() {
return new DruidDataSource();
}
}
属性文件使用 yaml 文件格式
配置文件除了使用 application.properties
类型, 还可以是后缀名为: .yml
或 .yaml
类型的,也会自动的加载,YAML 是一种简洁的非标记语言, 是以数据为中心, 使用空白缩进, 分行组织数据, 从而使得表示更加简洁易读。
示例如下所示,改造之前的 application.properties
为 application.yml
内容如下所示:
jdbc
driverClassName com.mysql.cj.jdbc.Driver
url jdbc mysql //localhost 3306/springboot?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
username root
password root
user
name BNTang
age10
language
Java
React
JDBCProperties 内容如下所示:
/**
* @author BNTang
*/
public class JDBCProperties {
String url;
String driverClassName;
String username;
String password;
class User {
String name;
String age;
List<String> language;
}
}
注意事项:如果有两个配置文件一个 .properties
和一个 .yml
,会取两个文件的并集, 如果有相同的名称, 会以 properties
为主。