1. 获取配置文件属性值
配置文件获取属性值,最开始的方法是:
@Value("${a.b.c}")
private String aBC;
这种方式,只要这样写就OK 了。
2. spring boot 中 有另一种:
@ConfigurationProperties(value = "a.b")
public class OrderCenterKafkaConfig {
private String c;
}
这种方式,不需要在 属性字段上加注解,但是需要在 类上加注解,并且 带了个 value,这个value 就是配置文件中 属性配置项的 共有的前缀。
但是,在使用这个注解的时候,需要一些注意的地方:
添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>2.1.17.RELEASE</version>
</dependency>
sping boot 启动类添加注解:
@EnableConfigurationProperties
@ConfigurationPropertiesScan
配置类 必须有 set 方法
@Data
这样才可以使用 这个注解,麻烦是麻烦了点,但是 用起来倒是挺方便。
dynamic-datasource-spring-boot-starter-2.5.4.jar中的应用:
属性配置方式:
# Mysql 数据源配置
spring.datasource.dynamic.datasource.master.url = jdbc:mysql://localhost:3306/test
spring.datasource.dynamic.datasource.master.username = root
spring.datasource.dynamic.datasource.master.password = test123
spring.datasource.dynamic.datasource.master.driver-class-name = com.mysql.cj.jdbc.Driver
@Getter
@Setter
@ConfigurationProperties(prefix = "spring.datasource.dynamic")
public class DynamicDataSourceProperties {
/**
* 必须设置默认的库,默认master
*/
private String primary = "master";
// 省略
/**
* 每一个数据源
*/
// 这个 datasource 是配置中的 一个层级,这个层级下可以配置多个 属性体, 用map 接收
/*
spring.datasource.dynamic.datasource.master.url = jdbc:mysql://localhost:3306/test
spring.datasource.dynamic.datasource.master.username = root
spring.datasource.dynamic.datasource.master.password = test123
spring.datasource.dynamic.datasource.master.driver-class-name = com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.follow.url = jdbc:mysql://localhost:3306/test
spring.datasource.dynamic.datasource.follow.username = root
spring.datasource.dynamic.datasource.follow.password = test123
spring.datasource.dynamic.datasource.follow.driver-class-name = com.mysql.cj.jdbc.Driver
datasource 是map的变量名
master/follow 是key
url,username,password,driver-class-name 是 value中的属性
*/
private Map<String, DataSourceProperty> datasource = new LinkedHashMap<>();
// 省略
}
@Data
@Accessors(chain = true)
public class DataSourceProperty {
// 省略
/**
* JDBC driver
*/
private String driverClassName;
/**
* JDBC url 地址
*/
private String url;
/**
* JDBC 用户名
*/
private String username;
/**
* JDBC 密码
*/
private String password;
// 省略
}