配置文件"/>
Spring Boot 面试题——配置文件
目录
- 1.介绍一下 Spirng Boot 中常用的两种配置文件。
- 2.Spirng Boot 中配置文件的优先级是什么样的?
- 3.Spring Boot 中读取配置文件的方式有哪些?
1.介绍一下 Spirng Boot 中常用的两种配置文件。
(1)在 Spring Boot 中,通常会使用两种常用的配置文件:
- application.properties:这是使用“key=value”形式的文本文件,主要用于简单场景下的配置,例如服务器端口、数据库连接等。示例:
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
- application.yml:这是一种基于 YAML (YAML Ain’t Markup Language) 语言表示的文本文件,主要用于复杂场景下的配置,例如多数据源、多环境等。示例如下:
server:port: 8080
spring:datasource:master:url: jdbc:mysql://localhost:3306/masterusername: rootpassword: 123456slave:url: jdbc:mysql://localhost:3306/slaveusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driver
需要注意的是,在 Spring Boot 中,如果同时存在 application.properties 和 application.yml 两个配置文件,优先使用 application.properties 中的配置。
(2)综上所述,对于简单场景下的配置,可以使用 application.properties 文件,而对于复杂场景下的配置,则建议使用 application.yml 文件。在使用 YAML 编写配置时,需要特别注意缩进以及大小写的用法,否则会导致配置文件读取失败。
2.Spirng Boot 中配置文件的优先级是什么样的?
有关配置文件的优先级可以参考SpringBoot 配置文件加载优先级这篇文章。
3.Spring Boot 中读取配置文件的方式有哪些?
假设配置文件 application.properties
中的内容如下:
# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver# 日志配置
logging.level.example.foo=DEBUG
logging.level.root=INFO# 应用配置
myapp.name=MyApp
myapp.version=1.0
myapp.greeting=Hello
myapp.env=${MY_ENV:dev}server.port=8080
那么读取该配置文件的方法如下所示:
- 使用
@Value
注解:通过 @Value 注解来获取配置文件中的值,示例如下:
// 获取myapp.name
@Value("${myapp.name}")
private String appName;// 获取logging.level.example.foo
@Value("${logging.level.example.foo}")
private String loggingLevelFoo;
- 使用
@ConfigurationProperties
注解:@ConfigurationProperties 注解将配置文件中的值注入到一个 JavaBean 中,示例如下:
@ConfigurationProperties(prefix = "myapp")
public class MyAppConfig {private String name;private String version;private String greeting;private String env;// getters and setters
}
- 使用
Environment
对象:通过 Environment 对象获取配置文件中的值,示例如下:
@Autowired
private Environment env;public void printConfig() {System.out.println(env.getProperty("myapp.name"));System.out.println(env.getProperty("logging.level.example.foo"));
}
- 使用
@PropertySource
注解:使用 @PropertySource 注解来指定配置文件的位置,示例如下:
@Configuration
@PropertySource("classpath:application.properties")
public class AppConfig {// 配置类定义@Value("${myapp.name}")private String appName;
}
以上是 Spring Boot 常用的读取配置文件的方法,根据需求选择性使用即可。
注意:YAML 配置的方式不支持
@PropertySource
注解导入自定义的 YAML 配置!
更多推荐
Spring Boot 面试题——配置文件
发布评论