本文收录于《Spring Boot从入门到精通》(https://luoyong.blog.csdn.net/article/details/131453171),专门攻坚指数提升,2023 年国内最系统+最强(更新中)。
本专栏致力打造最硬核Spring Boot 系列教程,从零基础到进阶系列学习内容,均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。
环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE
1. 前言
随着企业IT应用架构越来越复杂,为了使应用开发和部署更加稳定、快速、可靠,常常需要把应用程序的配置文件和环境分离,其中的一个重要方案就是多环境配置。在多环境配置中,不同的环境可以定义不同的参数,比如数据库连接、日志输出等等。Spring Boot自带了多环境配置的支持,本文将介绍如何轻松实现开发、测试、生产环境切换。
2. 摘要
本文将采用Spring Boot的多环境配置,实现应用程序在不同环境下的部署。首先,我们将创建一个Spring Boot应用程序,并定义三个不同的配置文件:application-dev.properties、application-test.properties和application-prod.properties,分别对应开发、测试和生产环境。然后,我们将演示如何在应用程序中通过注入Environment对象来获取配置信息,以及如何在maven中通过profiles来实现环境的切换。
3. 正文
3.1 创建Spring Boot应用程序
首先,我们需要创建一个Spring Boot应用程序,可以在Spring官网上下载最新版本的Spring Boot框架。在创建应用程序时,需要选择Spring Initializr,然后填写项目基本信息,比如Group、Artifact、Dependencies等等。在本文中,我们选择Web和JPA作为应用程序的依赖,如下所示:
项目整体结构截图演示:
3.2 定义配置文件
在应用程序的src/main/resources目录下,我们可以定义应用程序的配置文件。Spring Boot提供了多种配置文件格式,包括.properties、.yaml、.json等等。在本文中,我们选择.properties格式来作为应用程序的配置文件。
在创建应用程序时,可以与原有的application.properties文件合并,也可以单独创建application-dev.properties、application-test.properties和application-prod.properties文件来分别对应不同的环境。在每个文件中,我们可以定义不同的配置参数,比如数据库连接、日志输出等等。下面是一个示例:
application-dev.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/dev
spring.datasource.username=root
spring.datasource.password=root
logging.level.org.springframework.web=DEBUG
application-test.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
logging.level.org.springframework.web=INFO
application-prod.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/prod
spring.datasource.username=root
spring.datasource.password=root
logging.level.org.springframework.web=ERROR
示例截图如下:
3.3 获取配置信息
在应用程序中,我们可以通过注入Environment对象来获取不同环境下的配置信息。Environment对象是Spring Boot提供的一个核心组件,可以帮助我们轻松获取应用程序的配置信息。下面是一个简单的示例:
@RestController
public class ExampleController {
@Autowired
private Environment env;
@GetMapping("/config")
public String getConfig() {
String url = env.getProperty("spring.datasource.url");
String username = env.getProperty("spring.datasource.username");
String password = env.getProperty("spring.datasource.password");
return "URL=" + url + ", Username=" + username + ", Password=" + password;
}
}
在以上示例中,我们定义了一个RestController,通过注入Environment对象来获取数据库连接参数。在应用程序中,我们可以通过调用env.getProperty(String key)方法来获取不同环境下的配置信息。同时,我们也可以使用@Value注解来获取配置参数,如下所示:
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
3.4 切换环境
在使用Spring Boot的多环境配置时,我们常常需要在不同的环境下进行切换。Spring Boot提供了多种方法来实现环境的切换,其中最常用的是使用maven的profiles。
在pom.xml文件中,我们可以定义不同的profiles,比如dev、test和prod。在不同的profiles中,我们可以定义不同的依赖、插件、配置等等。下面是一个简单的示例:
dev
dev
true
test
tes服务器托管网t
prod
prod
src/main/resources
true
在以上示例中,我们定义了三个不同的profiles,分别对应开发、测试和生产环境。在每个profiles中,我们通过activatedProperties属性来指定应用程序使用的配置文件。同时,在build节点中,我们还需要添加一个resource节点来指定对应的配置文件目录,并设置filtering为true,以便通服务器托管网过maven的profiles来切换环境。
示例截图如下:
4. 测试用例
为保证代码质量和可靠性,我们需要编写测试用例来验证应用程序的正确性。下面是一个简单的测试用例:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ExampleControllerTest {
@Autowired
private TestRestTemplate restTemplate;
@Value("${local.server.port}")
private int port;
@Test
public void getConfig() {
ResponseEntity response = restTemplate.getForEntity("http://localhost:" + port + "/config", String.class);
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(response.getBody()).isEqualTo("URL=jdbc:mysql://localhost:3306/dev, Username=root, Password=root");
}
}
小结
Spring Boot的多环境配置是一个非常重要的技术,可以帮助我们轻松实现应用程序的开发、测试、生产环境切换。通过本文的介绍,我们可以学习到如何为应用程序定义多个不同的配置文件,并通过注入Environment对象来获取配置信息。此外,我们还可以通过maven的profiles来实现不同环境间的切换,使得应用程序的部署更加灵活。
关于我
作者:bug菌
✏️博客:CSDN、掘金、infoQ、51CTO等
简介:CSDN|阿里云|华为云|51CTO等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料.
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: Python开发实例(28)邮件客户端:创建一个简单的命令行或图形界面的邮件客户端应用。
创建一个完整的邮件客户端应用是一个复杂的项目,它需要处理邮件协议(如SMTP和IMAP)、用户界面和邮件数据。在这里,我将提供一个基本的命令行版本的邮件客户端示例,它可以发送邮件。请注意,这只是一个简单的示例,不包括接收邮件和其他高级功能。 首先,你需要安装s…