下面是详细讲解“springboot多环境配置方案(不用5分钟)”的完整攻略:
1. 原理
Spring Boot 支持通过不同的配置文件来管理不同的环境。它提供了一个标准的命名规则:application-{profile}.properties/yml
,比如 application-dev.yml
,application-test.yml
,application-prod.yml
等。其中 profile
就是环境名称。
Spring Boot 会通过开启不同的 profile 来加载不同的配置文件。可以通过下面两种方式来配置:
- 在 application.properties/yml 中设置
spring.profiles.active
属性。比如spring.profiles.active=dev
。 - 通过启动命令行参数来设置。比如
java -jar myproject.jar --spring.profiles.active=dev
。
2. 实现步骤
这里以一个 Spring Boot 项目为例子,通过 application.properties/yml 和命令行参数方式来演示如何配置多环境。
2.1 创建配置文件
在 src/main/resources 目录下创建以下配置文件:
application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/prod
spring.datasource.username=root
spring.datasource.password=root
server.port=8080
application-dev.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/dev
application-test.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/test
2.2 配置 Maven
在 pom.xml 文件中添加以下插件:
<!-- 设置默认 Spring Boot profile -->
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
<!-- 配置 Maven 打包时指定 profile -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<profiles>
<profile>dev</profile>
</profiles>
</configuration>
</plugin>
</plugins>
</build>
2.3 修改代码
修改代码,使用 @Value
注解来获取配置文件中的参数。
@SpringBootApplication
public class Application {
@Value("${spring.datasource.url}")
private String datasourceUrl;
@Value("${server.port}")
private int port;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@RequestMapping("/")
String home() {
return "datasource url: " + datasourceUrl + ", port: " + port;
}
}
2.4 打包并运行
通过 Maven 打包:
mvn package -Dspring.profiles.active=dev
运行:
java -jar target/myproject.jar --spring.profiles.active=dev
通过 curl 访问 http://localhost:8080/
,输出:
datasource url: jdbc:mysql://localhost:3306/dev, port: 8080
这样就成功配置了 dev 环境的参数。
3. 示例
下面是两条示例:
示例1:多个 profile 方式
创建以下三个配置文件:
application-dev.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/dev
application-test.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/test
application-prod.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/prod
在代码中通过 @Value
注解来获取配置文件中的参数:
@SpringBootApplication
public class Application {
@Value("${spring.datasource.url}")
private String datasourceUrl;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@RequestMapping("/")
String home() {
return "datasource url: " + datasourceUrl;
}
}
通过下面命令分别启动不同的 profile:
java -jar myproject.jar --spring.profiles.active=dev
java -jar myproject.jar --spring.profiles.active=test
java -jar myproject.jar --spring.profiles.active=prod
这样就可以在不同的 profile 中使用不同的配置文件了。
示例2:命令行参数方式
只需要在启动的时候加上参数即可:
java -jar myproject.jar --spring.profiles.active=dev
这样就会加载 application-dev.properties 中的配置文件了。
4. 结论
通过 Spring Boot 多环境配置方案,可以方便的管理不同环境下的配置文件。只需要通过不同的 profile 来加载不同的配置文件即可。可以通过设置命令行参数或者配置文件来指定 profile,或者选择默认的 profile。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot多环境配置方案(不用5分钟) - Python技术站