SpringBoot(二):基础配置文件、yaml语法、多环境开发配置

news2024/11/25 20:42:13

目录

一、配置文件

1、配置文件格式

2、自动提示功能失灵解决方案

3、SpringBoot配置文件加载顺序

二、yaml

1、yaml介绍

2、yaml语法规则

3、yaml数组数据

4、yaml数据读取

三、多环境开发配置

1、多环境启动配置

2、多环境启动命令格式

3、多环境开发控制 

四、配置文件分类 

1、SpringBoot中4级配置文件

2、作用


一、配置文件

1、配置文件格式

SpringBoot提供了多种属性配置方式

        application.properties

server.port=80

         application.yml

server:
  port: 81

         application.yaml

server:
  port: 82

2、自动提示功能失灵解决方案

(1)文件-项目结构

(2)Facet-选项目对应spring-点spring自定义按钮 

(3)选中没有导入的配置文件-确认

3、SpringBoot配置文件加载顺序

application.properties > application.yml > application.yaml

1. SpringBoot核心配置文件名为application
2. SpringBoot内置属性过多,且所有属性集中在一起修改,在使用时,通过提示键+关键字修改属性

二、yaml

1、yaml介绍

(1)YAML(YAML Ain't Markup Language),一种数据序列化格式

(2)优点:

        容易阅读

        容易与脚本语言交互

        以数据为核心,重数据轻格式

(3)YAML文件扩展名

        .yml(主流)

        .yaml

2、yaml语法规则

(1)大小写敏感

(2)属性层级关系使用多行描述,每行结尾使用冒号结束

(3)使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)

(4)属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)

(5)# 表示注释

(6)核心规则:数据前面要加空格与冒号隔开

enterprise:
 name: csdn
 age: 16 
 tel: 1333333333

3、yaml数组数据

数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔

enterprise:
  name: csdn
  age: 16
  tel: 1444444444444
  subject:
    - Java
    - 前端
    - 大数据

4、yaml数据读取

lesson: SpringBoot

server:
  port: 82

enterprise:
  name: csdn
  age: 16
  tel: 888888888
  subject:
    - Java
    - 前端
    - 大数据

(1)使用@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名……}

@RestController
@RequestMapping("/books")
public class BookController {

    @Value("${lesson}")
    private String lessonName;

    @Value("${server.port}")
    private int port;

    @Value("${enterprise.subject[1]}")
    private String[] subject_01;
}

(2)封装全部数据到Environment对象

@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    private Environment env;
    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println(env.getProperty("lesson"));
        System.out.println(env.getProperty("enterprise.name"));
        System.out.println(env.getProperty("enterprise.subject[0]"));
        return "hello , spring boot!";
    }
}

(3)自定义对象封装指定数据

@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
    private String name;
    private Integer age;
    private String[] subject;
   // 需要getter setter toString方法
}

(4)自定义对象封装数据警告解决方案

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

三、多环境开发配置

1、多环境启动配置

(1)yaml文件多环境启动

 

(2)properties文件多环境启动

#主启动配置文件 application.properties
spring.profiles.active=pro
#环境分类配置文件 application-pro.properties
server.port=80
#环境分类配置文件 application-dev.properties
server.port=81
#环境分类配置文件application-test.properties
server.port=82

2、多环境启动命令格式

(1)带参数启动SpringBoot

java –jar springboot.jar --spring.profiles.active=test
java –jar springboot.jar --server.port=88
java –jar springboot.jar --server.port=88 --spring.profiles.active=test

(2)参数加载优先顺序

由低到高 

3、多环境开发控制 

Maven与SpringBoot多环境兼容

(1)Maven中设置多环境属性

<profiles>
    <profile>
        <id>dev_env</id>
        <properties>
            <profile.active>dev</profile.active>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>pro_env</id>
        <properties>
            <profile.active>pro</profile.active>
        </properties>
    </profile>
    <profile>
        <id>test_env</id>
        <properties>
            <profile.active>test</profile.active>
        </properties>
    </profile>
</profiles>

(2) SpringBoot中引用Maven属性

spring:
  profiles:
    active: ${profile.active}

(3)执行Maven打包指令

Maven指令执行完毕后,生成了对应的包,其中类参与编译,但是配置文件并没有编译,而是复制到包中

解决思路:对于源码中非java类的操作要求加载Maven对应的属性,解析${}占位符

(4) 对资源文件开启对默认占位符的解析

<build>
    <plugins>
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                <encoding>utf-8</encoding>
                <useDefaultDelimiters>true</useDefaultDelimiters>
            </configuration>
        </plugin>
    </plugins>
</build>

四、配置文件分类 

1、SpringBoot中4级配置文件

        1级: file config/application.yml  最高

        2级: file application.yml

        3级:classpathconfig/application.yml

        4级:classpathapplication.yml  最低

2、作用

        1级与2级留做系统打包后设置通用属性

        3级与4级用于系统开发阶段设置通用属性

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

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

相关文章

VS Code常用操作

文章目录常用快捷键修改VS Code底部状态栏颜色VS Code添加Anaconda的Python源常用快捷键 (1) 对于 行 的操作&#xff1a; 重开一行&#xff1a;光标在行尾的话&#xff0c;回车即可&#xff1b;      不在行尾&#xff0c;Ctrl Enter 向下重开一行&#xff1b;    …

手拉手一起学HTML(下)——表格标签和列表标签,表单标签

&#x1f353;个人主页&#xff1a;bit.. &#x1f352;系列专栏&#xff1a;Linux(Ubuntu)入门必看 C语言刷题 数据结构与算法 目录 一.表格标签 1.1表格的主要作用 1.2表格的基本语法 1.3表头单元格标签 1.4表格属性 1.5表格结构标签 1.6合并单元格&#xff08…

prometheus 监控

【00】结构原理微服务中的监控分根据作用领域分为三大类&#xff0c;Logging&#xff0c;Tracing&#xff0c;Metrics。* Logging - 用于记录离散的事件。例如&#xff0c;应用程序的调试信息或错误信息。它是我们诊断问题的依据。比如我们说的ELK就是基于Logging。* Metrics -…

HTTP协议详解

1.HTTP协议介绍 先来给大家介绍以下HTTP&#xff1a; HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;&#xff1a; 全称超文本传输协议&#xff0c;是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议。HTTP 是一种…

【网络篇】如何搭建自己的DNS服务器

引言 平时练习域名解析&#xff0c;一般直接修改的/etc/hosts文件。对于服务器数量小的情况完全可以&#xff0c;但是如果服务器数量较多&#xff0c;每个都修改比较麻烦。 DNS是作为域名解析。在实际的生产过程中&#xff0c;尤其是对于内网搭建的情况&#xff0c;DNS不可能…

宝塔面板如何设置301重定向,为什么网站要设置重定向?

大家好&#xff0c;我是Q站小编鹏仔&#xff0c;本次给大家带来的教程是宝塔面板如何设置301重定向。 在设置之前&#xff0c;我们需先明白为什么要设置重定向呢&#xff1f; 在购买域名时&#xff0c;域名本身是不带有www的&#xff0c;由于在以前网站方都会增加一个"ww…

C#项目实战|人脸识别考勤

此文主要通过WinForm来制作的一个人脸识别考勤打卡程序&#xff0c;有兴趣的小伙伴可以接入到打卡机上。 一、实现流程1.1、创建项目1.2、设计页面1.3、创建应用1.4、获取Token及参数解析1.5、与人脸数据比对并展示一、实现流程 1.1、创建项目 打开Visual Studio&#xff0c;右…

HTML+CSS静态网页设计:(房地产网站设计与实现6页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

javascript事件处理二 事件对象event详解及target和currentTarget区别

在处理事件的时候&#xff0c;所有和事件相关的东西都封装到event这个对象里面。所以这个对象非常的重要。这个对象有非常多的内容&#xff0c;我们讨论几个计较常见和以及比较难区别的target和currentTarget。 常见属性 页面就是一个div&#xff0c;然后我们监听他的oclick事…

Python+大数据-Spark技术栈(三) SparkCore加强

Python大数据-Spark技术栈(三) SparkCore加强 重点&#xff1a;RDD的持久化和Checkpoint提高拓展知识&#xff1a;Spark内核调度全流程&#xff0c;Spark的Shuffle练习&#xff1a;热力图统计及电商基础指标统计combineByKey作为面试部分重点&#xff0c;可以作为扩展知识点 …

NLP | XLNet :用于语言理解的广义自回归预训练 论文详解

论文&#xff1a;XLNet: Generalized Autoregressive Pretraining for Language Understanding 论文地址&#xff1a;https://proceedings.neurips.cc/paper/2019/file/dc6a7e655d7e5840e66733e9ee67cc69-Paper.pdf 1.介绍 XLNet 是从蓬勃发展的自然语言处理 (NLP) 领域中出…

食用前须知(阅读并同意后在食用其他部分)

昨天刚和计科某数据结构老师聊这个事 让我别写题解了 以后会偷摸的在csdn更&#xff0c;大家千万低调点&#xff0c;严谨点&#xff01;&#xff01;&#xff01; 一般不会当天更了&#xff0c;会拖个一两天&#xff0c;大家先把会的写写&#xff0c;不会的再来看我教程 就算真…

高效率Paper写作需要哪些建议?

高效写Paper最关键的是要多写&#xff0c;写多了&#xff0c;英语行文能力提高&#xff0c;并且知道Paper写作大概的套路&#xff0c;Paper写作效率自然上升。小编为同学们带来一些建议。 The key to writing paper efficiently is to write more.If you write more,improve yo…

ijkplayer项目

ijkplayer项目 环境配置 NDK全称&#xff1a;Native Development Kit。 1、NDK是一系列工具的集合。NDK提供了一系列的工具&#xff0c;帮助开发者快速开发C&#xff08;或C&#xff09;的动态库&#xff0c;并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨…

C++ Reference: Standard C++ Library reference: C Library: cwchar: wmemset

C官网参考链接&#xff1a;https://cplusplus.com/reference/cwchar/wmemset/ 函数 <cwchar> wmemset wchar_t* wmemset (wchar_t* ptr, wchar_t wc, size_t num); 填充宽字符数组 将由ptr指向的宽字符数组的第一个num个元素设置为wc指定的值。 这是memset&#xff08;&…

瑞吉外卖强化(一):缓存优化

瑞吉外卖强化&#xff08;一&#xff09;&#xff1a;缓存优化瑞吉外卖 缓存优化Redis基本操作短信验证码 缓存实现缓存菜品数据SpringCache常用注解瑞吉外卖 缓存优化 Redis基本操作 redisTemplate需要配置类 这里的 需要对其进行 序列化操作 reidsTeplate.opsForValue().s…

HummerRisk 快速入门教程

1、一键部署 1. 部署服务器要求 操作系统要求&#xff1a;任何支持 Docker 的 Linux x64CPU内存要求&#xff1a;最低要求 4C8G&#xff0c;推荐 8C16G部署目录空间&#xff08;默认/opt目录&#xff09;要求&#xff1a; 50G网络要求&#xff1a;可访问互联网&#xff08;如…

Recall:JS EventLoop

有时候一段代码没有达到你想要的效果&#xff0c;可能加上setTimeout就好了 之前对事件循环一知半解&#xff0c;今天重新深入理解一下&#x1f602; 宏任务 JS是单线程的&#xff0c;但是浏览器是多线程的&#xff0c;当 JS 需要执行异步任务时&#xff0c;浏览器会另外启…

企业架构概述及业务架构详解

编辑导语&#xff1a;企业架构可以辅助企业完成业务及IT战略规划&#xff0c;还是企业信息化规划的核心&#xff0c;也有助于个人职业的健康长远发展。本文作者对企业架构的全景以及业务架构设计进行了分析&#xff0c;感兴趣的小伙伴们一起来看一下吧。 1&#xff09;对公司而…

PyTorch 加载 Mask R-CNN 预训练模型并 fine-tuning

目录1 Mask R-CNN 原理(简单版)2 ROI Align3 PyTorch 加载预训练模型1 Mask R-CNN 原理(简单版) Mask R-CNN 是一个实例分割&#xff08;Instance segmentation&#xff09;算法&#xff0c;主要是在目标检测的基础上再进行分割。 Mask R-CNN 算法主要是 Faster R-CNN FCN&…