💥 该系列属于【SpringBoot基础】专栏,如您需查看其他SpringBoot相关文章,请您点击左边的连接
目录
一、SpringBoot常用的两种配置文件
SpringBoot中常用的配置文件有两种.properties和.yml。
1. application.properties
(1)格式
- 传统的配置文件格式,使用键值对。
- 键和值之间用等号(
=
)连接。 - 没有缩进要求,通常也不使用层级结构。
(2)可读性
- 由于缺乏层级结构,当配置项较多时,可读性较差。
(3)特性
- 更适合简单的键值对配置。
- 不支持复杂的数据类型。
- 语法相对简单,但不够灵活。
(4)兼容性
- 适用于传统的Java应用程序。
- 大多数Java框架和库都支持.properties文件。
(5)案例
mybatis.mapper-locations=classpath:mappers/*xml
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=your_password
test.config.id=1
test.config.password=123456
test.config.url=www.baidu.com
2. application.yml
(1)格式
- 使用缩进来表示层级关系。
- 键值对通常不需要用等号连接,而是通过冒号(
:
)并在值前加一个空格。 - 支持复杂的数据结构,如列表和嵌套对象。
(2)可读性
- 使用缩进和清晰的层级结构,通常更易于阅读和理解。
- 支持注释(使用
#
),使得配置文件更易于维护。
(3)特性
- 支持复杂的数据类型,如数组、列表和映射。
- 可以使用锚点(&)和别名(*)来引用重复的数据,减少冗余。
- 更适合于有层级关系的配置,尤其是在微服务架构中。
- 语法灵活,但需要正确处理缩进,否则会导致解析错误。
(4)兼容性
- 在Spring框架及其生态系统中被广泛使用。
- 逐渐被更多的现代应用程序和框架所支持。
(5)案例
mybatis:
mapper-locations: classpath:mappers/*xml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
username: root
password: your_password
test:
config:
id: 1
password: 123456
url: www.baidu.com
二、SpringBoot程序中读取配置文件的值
1. TestProperties读取配置文件
@Data //生成getter,setter,toString等
@Component
@ConfigurationProperties(prefix = "test.config") //读取配置文件中的test.config.*
public class TestProperties {
private int id;
private String password;
private String url;
}
2. 【ReadConfigController】测试
@RestController
public class ReadConfigController {
@Autowired
private TestProperties testProperties;
@RequestMapping("/read")
public String read() {
int id = testProperties.getId();
String url = testProperties.getUrl();
String password = testProperties.getPassword();
System.out.println(id);
System.out.println(url);
System.out.println(password);
return id + "\n" + url + "\n" + password;
}
}
3. 接口测试
4. 分析
- @Component 注解将 TestProperties 类标记为一个 Spring Bean,使其能够被 Spring 容器管理。
- @Autowired 注解用于自动装配 TestProperties 类的实例到 ReadConfigController 中。在 ReadConfigController 中,通过自动装配的 TestProperties 实例,可以直接访问其属性。
三、配置类中设定启动时存放在Spring容器中的Bean类
1. 设置一个即将要存放在容器中的Bean
即将要存放在容器中的Bean——MathUtil
public class MathUtil {
public void printPI(){
System.out.println(Math.PI);
}
}
2. 配置类加载该Bean
@Slf4j
@Configuration
public class TestConfig {
@Bean //声明MathUtil要放入Spring容器
protected MathUtil printMessage(TestProperties testProperties) { //TestProperties只需满足属于Spring容器里即可
log.info(String.valueOf(testProperties)); //控制台输出已放入Spring容器的对象
MathUtil mathUtil = new MathUtil();
return mathUtil; //把MathUtil放入Spring容器
}
}
3. 【ReadConfigController】测试
@RestController
public class ReadConfigController {
@Autowired
private MathUtil mathUtil;
@RequestMapping("/printPI")
public String printPI() {
mathUtil.printPI(); //输出3.1415926...
return "OK";
}
}
4. 接口测试
2024-07-30 00:31:52.782 INFO 193784 --- [ main] com.example.config.TestConfig : TestProperties(id=1, password=123456, url=www.baidu.com)
3.141592653589793