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

news2024/12/25 10:02:55

文件类型介绍

  • 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工具。

在这里插入图片描述



import javax.annotation.Resource;
import java.util.List;

@SpringBootTest
@RunWith(SpringRunner.class)
public class UserInfoMapperTest {

    @Resource
    PcUserInfoMapper pcUserInfoMapper;

    @Resource
    PcUserInfoService pcUserInfoService;


    /**
     * 添加
     */
    @Test
    public void addUser(){ //String name,String account
        UserInfo userInfo = new UserInfo();
        userInfo.setId(new Long((long) 0));
        userInfo.setName("123师傅");
        userInfo.setAccount("173607");
        userInfo.setPassword("123456");
        userInfo.setSalt("1");
        userInfo.setImg(null);
        userInfo.setCreateTime(null);
        userInfo.setCreateUser(null);
        userInfo.setUpdateTime(null);
        userInfo.setUpdateUser(null);
        userInfo.setStatus(true);
        userInfo.setOpenId(null);

        /*
        int i = pcUserInfoMapper.addUsers(userInfo);
        System.out.println(i);

         */
        Boolean aBoolean = pcUserInfoService.addAccount(userInfo);
        System.out.println(aBoolean);
    }

    /**
     * 删除
     */
    @Test
    public void deleteUser(){
        String name = "adsads4";
        int i = pcUserInfoMapper.updateByName(name);
        System.out.println(i);
    }

    /*
    创建用户是是否存在

     */
    @Test
    public void ifExsits(){
        List<Integer> adsads4 = pcUserInfoMapper.judge_if_user_exists("adsads4");
        if (adsads4.size() != 0){
            System.out.println("exist");
        }else {
            System.out.println("ok");
        }
    }


    /*
    查询所有
     */
    @Test
    public void selectAll(){
        System.out.println(pcUserInfoService.selectAll().size());
    }

    @Test
    public void fuzzySelect(){
        pcUserInfoService.fuzzySelect(1,0,null,null);
    }
}

点击最后一个

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

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/135217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

elasticsearch 7.9.3知识归纳整理(二)之es基本原理及使用kibana操作es的常见命令

es基本原理及使用kibana操作es的常见命令 一、es的基本原理与基础概念 1.1 倒排索引 倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值&#xff0c;而是由属性值来确定记录…

【机器学习】机器学习中常用的损失函数一览

问题 机器学习中常用的损失函数总结 前言 我们经常听到损失函数、代价函数和目标函数这三种说法&#xff0c;这三种说法有什么联系和区别呢&#xff1f;这里明确下&#xff1a; 损失函数 Loss Function 通常是针对单个训练样本而言的&#xff0c;给定一个模型输出 y^\hat{y…

设计模式 - UML类图

1. 什么是 UML 统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统图形化、能表达软件设计中的动态与静态信息。L从目标系统的不同角度出发&#xff0c;定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图部署…

8种数据结构

快速介绍8种常用数据结构 数据结构是一种特殊的组织和存储数据的方式&#xff0c;可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。 几乎所有已开发的程序或软件系统都使用数据结构。此外&#xff0c;数据结构属于计算…

【回答问题】ChatGPT上线了!有哪些3D点云算法模型?3D点云算法模型实现代码?

有哪些3D点云算法模型&#xff1f; 3D点云算法的模型有很多种&#xff0c;以下是一些常见的算法模型&#xff1a; 归一化重心法&#xff08;Normalized point-to-point ICP&#xff09;&#xff1a;是一种常用的模型配准方法&#xff0c;用于将两个模型中的点匹配起来。 基于…

跨年晚会前夕,曹云金和前妻复合了

每到跨年晚会的时候&#xff0c;总会有大的新闻事件发生&#xff0c;比如说在今年跨年晚会前夕&#xff0c;主持人何炅的老父亲&#xff0c;就非常不幸地驾鹤西去了。话说主持人何炅&#xff0c;在父亲离开后坚强地主持节目&#xff0c;他泪眼婆娑的表情&#xff0c;也登上了各…

电子游戏销售之回归模型与数据可视化

电子游戏销售之回归模型与数据可视化 文章目录电子游戏销售之回归模型与数据可视化0、写在前面1、回归模型1.1 模型建立准备1.2 建立模型1.3 模型分析2、数据可视化3、参考资料0、写在前面 该篇文章的任务包括以下3个方面 检测与处理缺失值建立回归模型数据可视化 实验环境 Pyt…

我的2022年总结

我的2022年总结 行走于世&#xff0c;风大时要表现逆的风骨&#xff0c;风小时要表现顺的悠然。 我们可以转身&#xff0c;但是不必回头&#xff0c;即使有一天你发现自己走错了&#xff0c;你也应该转身大步朝着对的方向去&#xff0c;而不是回头埋怨自己错了。 一、旧事 …

INT201-Decision, Computation and Language(2)

文章目录5. Turing Machine5.1 TM Configuration5.2 TM Transitions5.3 TM Computation5.4 Language accepted by TM5.5 Decider5.6 Multi-tape TM5.6.1 Multi-tape TM equivalent to 1-tape TM5.7 Nondeterministic TM5.7.1 Address5.7.2 NTM equivalent to TM5.8 Enumerable …

【Linux操作系统】yum三板斧和yum源的配置

文章目录一.Linux下软件的生态二.yum三板斧1.yum简介2.list搜索软件包3.install下载并安装4.remove卸载软件三.windows/Linux下文件互传1.lrzsz的查看和下载安装2.rz上传3.sz下载四.Linux软件生态的本土化1.镜像简介2.Linux软件生态的本土化五.yum源的配置1.找到yum源配置文件并…

Jedis: Java连接redis服务

文章目录一、编程语言与 Redis二、Jedis 连接三、JedisPool 连接池四、可视化客户端提示&#xff1a;以下是本篇文章正文内容&#xff0c;Redis系列学习将会持续更新 一、编程语言与 Redis ● Java 语言连接 redis 服务   Jedis   SpringData Redis   Lettuce ● C 、C …

ArcGIS基础实验操作100例--实验40构建点对连线

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验40 构建点对连线 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&…

可视化系列讲解:canvas的动画实现

文章目录一、Canvas动画1.1 Canvas绘图都是通过JavaScript 去操控的&#xff0c;如要实现一些交互性动画是相当容易的。那Canvas是如何做一些基本动画的&#xff1f;1.2 Canvas 画出一帧动画的基本步骤&#xff08;如要画出流畅动画&#xff0c;1s 需绘60帧&#xff09;&#x…

【回答问题】ChatGPT上线了!推荐30个以上比较好的自然语言处理模型

【回答问题】ChatGPT上线了&#xff01;推荐40个以上比较好的自然语言处理模型以及github源码&#xff1f; BERT (Bidirectional Encoder Representations from Transformers): https://github.com/google-research/bert GPT (Generative Pre-training Transformer): https:/…

Taro笔记

Taro官网:https://nervjs.github.io/taro-docs/docs/ Taro简介 可使用React、Vue等框架开发跨端开发框架,一套代码编译到多端,使用Taro,只书写一套代码,再通过Taro的编译工具,将源代码分别编译出可以在不同端(微信小程序、H5、RN等)运行的代码。Taro 核心转化图 Taro使…

数据链路层重点总结

文章目录前言一、MAC地址二、一跳一跳的网络传输三、以太网四、ARP协议4.1 ARP协议的作用4.2 ARP协议的工作流程五、MTU5.1 什么是MTU5.2 MTU对IP协议的影响5.3 MTU对UDP协议的影响5.4 MTU对于TCP协议的影响总结前言 又是新的一年&#xff0c;展望2023年&#xff0c;博主给大家…

可视化系列讲解:canvas的进阶使用(颜色和样式设置,绘制文本,绘制图片)

文章目录一、Canvas的颜色和样式设置1.1 颜色&#xff08;不设置默认黑色&#xff09;1.2 透明度 Transparent1.3 线型 Line styles二、Canvas绘制文本2.1 文本的样式&#xff08;需在绘制文本前调用&#xff09;2.2 fillText(text, x, y [, maxWidth])2.3 strokeText(text, x,…

回首2022,展望2023

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小黄&#xff0c;独角兽企业的Java开发工程师&#xff0c;CSDN博客专家&#xff0c;Java领域新星创作者&#x1f4d5;系列专栏&#xff1a;Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到…

【自学Java】Java数据类型

Java数据类型 Java数据类型 数据类型在编程语言中占有重要的地位。Java 的数据类型分为基本数据类型和引用数据类型。 Java基本类型 Java 基本数据类型包括&#xff1a;boolean&#xff0c;byte&#xff0c;char&#xff0c;short&#xff0c;int&#xff0c;long&#xff…

node.js中fs\path\http模块的使用

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;Node.js的fs\path\http模块的使用&#xff0c;模块化开发概念 目录 一、node.js概念与作…