- Spring Boot多环境配置文件解释
Spring Boot支持多种环境配置,包括开发环境、测试环境和生产环境等。在不同环境下,可能需要配置不同的参数。因此,Spring Boot提供了多环境配置文件的支持,让我们可以轻松地在多个环境下使用不同的配置。
Spring Boot默认会使用application.properties或application.yml作为默认的配置文件。但是,我们可以根据不同的环境创建不同的配置文件,并在启动程序时指定要使用哪个配置文件。以application.properties配置文件为例,在与其同级别的目录下,可以创建以下多个配置文件:
- application-dev.properties
- application-test.properties
- application-prod.properties
其中,dev、test和prod分别表示开发环境、测试环境和生产环境。Spring Boot会根据当前的启动环境动态加载相应的配置文件。
启动应用时,我们可以通过以下方式指定启动的环境:
- 在命令行中使用--spring.profiles.active参数指定,如:java -jar xxx.jar --spring.profiles.active=dev
-
在application.properties或application.yml中指定当前环境,如:spring.profiles.active=dev
-
Spring Boot自定义配置文件路径
除了application.properties或application.yml配置文件外,我们还可以根据需要自定义配置文件的路径。Spring Boot默认会在classpath:/config目录下加载外部配置文件。如果我们需要使用其他路径下的配置文件,可以通过以下方式自定义:
- 在命令行中使用--spring.config.name和--spring.config.location参数指定,如:java -jar xxx.jar --spring.config.name=myconfig --spring.config.location=/mydir/
-
在项目根目录下创建config文件夹,并在其中创建自定义的配置文件,如:myconfig.properties或myconfig.yml
-
示例一:自定义配置文件路径
在项目中创建config文件夹,并在其中创建myconfig.properties文件。在此文件中添加以下配置:
myconfig.name=MyConfig
myconfig.version=1.0.0
在启动类中使用@PropertySource注解指定要加载的自定义配置文件:
@SpringBootApplication
@PropertySource(value = "classpath:/config/myconfig.properties")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
在控制器中使用@Value注解读取配置文件中的值:
@RestController
public class HelloController {
@Value("${myconfig.name}")
private String name;
@GetMapping("/hello")
public String hello() {
return "Hello, " + name + "!";
}
}
启动程序后,访问http://localhost:8080/hello,会返回Hello, MyConfig!的信息。
- 示例二:多环境配置文件
在项目根目录下创建application-dev.properties、application-test.properties和application-prod.properties三个文件,分别定义开发环境、测试环境和生产环境的配置信息,例如:
application-dev.properties
spring.datasource.url=jdbc:mysql://localhost:3306/dev_db
spring.datasource.username=root
spring.datasource.password=123456
application-test.properties
spring.datasource.url=jdbc:mysql://localhost:3306/test_db
spring.datasource.username=root
spring.datasource.password=123456
application-prod.properties
spring.datasource.url=jdbc:mysql://localhost:3306/prod_db
spring.datasource.username=root
spring.datasource.password=123456
在启动类中使用@Profile注解指定要使用的环境配置:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@Configuration
@Profile("dev")
@PropertySource("classpath:/application-dev.properties")
@Configuration
@Profile("test")
@PropertySource("classpath:/application-test.properties")
@Configuration
@Profile("prod")
@PropertySource("classpath:/application-prod.properties")
在控制器中使用@Value注解读取配置文件中的值:
@RestController
public class HelloController {
@Value("${spring.datasource.url}")
private String url;
@GetMapping("/url")
public String getUrl() {
return "Database URL: " + url;
}
}
在不同的环境下启动程序,访问http://localhost:8080/url,会分别返回dev、test和prod三个环境下的数据库URL信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot多环境配置文件及自定义配置文件路径详解 - Python技术站