spring boot启动环境的配置与更改(dev,local,pro)包含单元测试环境

文件类型介绍

  • properties

该文件是一种key-value的格式,配置文件的特点是,它的Key-Value一般都是String-String类型的,因此我们完全可以用Map<String, String>来表示它。

用Properties读取配置文件非常简单。Java默认配置文件以.properties为扩展名,每行以key=value表示,以#课开头的是注释。

spring.profiles.active=dev
server.port = 8080
  • yaml

YAML是是以数据作为中心的文本,使用空格、缩进、分行来组织数据,使得内容更加简洁易读,并且有利于运维人员后期的维护,有点类似于json格式。

server:
  prot: 8080

相对于properties更简洁,减少冗余性。

yaml以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。属性和值的大小写都十分敏感的。值前面一定要有一个空格。"":双引号;不会转义字符串里面的特殊字符;'':单引号;会转义特殊字符。

优势
在这里插入图片描述

spring boot配置文件

通常情况下,Spring Boot 在启动时会将 resources 目录下的 application.properties apllication.yml 作为其默认配置文件,我们可以在该配置文件中对项目进行配置,但这并不意味着 Spring Boot 项目中只能存在一个 application.properties 或 application.yml。

application.properties 优先级高于 application.yml。一个项目中只使用一种格式的配置文件,便于统一管理维护维护。

spring boot项目启动时默认加载的优先级:

在这里插入图片描述
在这里插入图片描述

yaml配置文件的内容填充到IOC容器中:

spring boot项目在启动时都会读取并记载配置文件,通过@ConfigurationProperties注解可以将配置文件的所有内容加载到IOC容器并装配, @Value将相关属性一一对应自动装配。

person:
  name: mike
  age: 21
  sex:
@Component  //注册bean
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private int age;
    private String sex;
    private Date date;
    private Dog dog;
    private List<Object> list;
    private Map<String,Object> map;
    
    //setter and  getter 
    }

@Component //注册bean
@PropertySource(value = "classpath:user.properties")
public class User {
    //直接使用@value
    @Value("${user.name}") //从配置文件中取值
    private String name;
    @Value("#{user.age}")  // #{SPEL} Spring表达式
    private int age;
    @Value("user.sex")  // 
    private String sex;
}

@PropertySource用于加载指定文件,非application前缀命名的都要使用该注解。该注解解决了一些配置分文件管理,不必都写了主配置文件中,减少冗余。

在这里插入图片描述

还有一个注解是@ImportResource自定义的xml配置文件,默认情况下这个bean是不会加载到Spring容器中来的。需要@ImportResource注解将这个配置文件加载进来。

在这里插入图片描述

多profile文件多启动环境

在开发,运行和测试的阶段,不同环境需要不同的配置如dev,pro,local环境

在这里插入图片描述

这样在启动时只需要激活相应的环境即可。

在这里插入图片描述

spring.profiles.active=dev激活配置文件。

除了在配置文件中在idea中也可以更改:

在这里插入图片描述

在pom文件中也可以设置

在这里插入图片描述

yaml的配置文件激活

在这里插入图片描述

两种配置方式的比较:

(1)Properties配置多环境,需要添加多个配置文件,YAML只需要一个配件文件

(2)书写格式的差异,yaml相对比较简洁,优雅

(3)YAML的缺点:不能通过@PropertySource注解加载。如果需要使用@PropertySource注解的方式加载值,那就要使用properties文件。

还可以dos命令更改:

java -jar myapp.jar --spring.profiles.active=dev

主要的激活方式

在这里插入图片描述

-Dspring.profiles.active=dev

单元测试启动环境配置

在spring boot的单元测试中,若想启动其他环境的需要通过idea工具。

在这里插入图片描述

如果直接点击Run xxx则启动的时配置文件配置了激活的环境,如spring.profiles.active=dev

在这里插入图片描述

如果需要更换环境,就要点击最后一个Modify Run Configuration..

在这里插入图片描述
在图中红线所指的属性添加spring.profiles.active=dev即可只能用key-value格式。

这样在启动时就会启动相应的环境:

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
您好!针对您的问题,您可以按照以下步骤配置环境启动配置文件: 1. 在 `src/main/resources` 目录下创建三个配置文件,分别为 `application.properties`、`application-dev.properties`、`application-prod.properties`。其中,`application.properties` 文件是默认的配置文件,`application-dev.properties` 文件是开发环境配置文件,`application-prod.properties` 文件是生产环境配置文件。 2. 在 `application.properties` 文件中,添加以下配置: ``` spring.profiles.active=dev ``` 这个配置表示默认情况下启用 `dev` 环境配置。 3. 在 `application-dev.properties` 文件中,添加针对开发环境配置,例如: ``` server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/dev_db spring.datasource.username=root spring.datasource.password=root123 ``` 4. 在 `application-prod.properties` 文件中,添加针对生产环境配置,例如: ``` server.port=80 spring.datasource.url=jdbc:mysql://localhost:3306/prod_db spring.datasource.username=root spring.datasource.password=root123 ``` 5. 在 `pom.xml` 文件中,添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> ``` 6. 启动项目时,使用 `-Dspring.profiles.active=prod` 参数指定启用生产环境配置。 以上就是配置环境启动配置文件的步骤。希望能够对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xvwen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值