Springboot笔记-05

news2024/12/23 4:10:03

1.Springboot的热部署

spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring
Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。

在pom文件加入依赖

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

修改java代码或者配置文件模板后可以通过fn+ctrl+f9来实施热部署
举例子:
请添加图片描述
请添加图片描述
现在改为hi我们直接在这儿FN+CTR+F9就行,然后刷新页面
请添加图片描述
2.配置文件占位符
1.随机数
r a n d o m . v a l u e 、 {random.value}、 random.value{random.int}、${random.long}
r a n d o m . i n t ( 10 ) 、 {random.int(10)}、 random.int(10){random.int[1024,65536]}
演示:
在配置文件里


person.last-name=张三${random.uuid}
person.age=${random.int}
person.birth=2017/12/12
person.boss=false
person.dog.name=${person.last-name}_dag
person.dog.age=15
person.maps.k1=v1
person.maps.k2=12
person.lists==a,b,c

测试输出:

2024-03-20 15:04:24.599  INFO 96092 --- [           main] c.q.s.Springboot02ApplicationTests       : Started Springboot02ApplicationTests in 6.501 seconds (JVM running for 7.315)
Person{lastname='张三f21d8a23-bf66-4213-93ab-56a7059a7112', age=138692754, boss=false, birth=Tue Dec 12 00:00:00 GMT+08:00 2017, maps={k1=v1, k2=12}, lists=[=a, b, c], dog=Dog{name='张三c53af188-de27-4e60-8c13-645a537c61c7_dag', age=15}}

2.占位符获取之前配置的值,如果没有可以是用:指定默认值

person.last-name=张三${random.uuid}
person.age=${random.int}
person.birth=2017/12/12
person.boss=false
person.dog.name=${person.hello:hi}_dag
person.dog.age=15
person.maps.k1=v1
person.maps.k2=12
person.lists==a,b,c

结果:

2024-03-20 15:07:55.403  INFO 93212 --- [           main] c.q.s.Springboot02ApplicationTests       : Started Springboot02ApplicationTests in 6.544 seconds (JVM running for 7.304)
Person{lastname='张三ed308fda-8c74-4b8a-8d19-f3ce94578009', age=-2036573979, boss=false, birth=Tue Dec 12 00:00:00 GMT+08:00 2017, maps={k1=v1, k2=12}, lists=[=a, b, c], dog=Dog{name='hi_dag', age=15}}

这里面有很多种,我就不一一展示了,我运行的是,当这个属性假如是last-name没有赋值,然后在dog.name那里 p e r s o n . l a s t − n a m e 就是报错的,而且也不能指定默认值,但是如果这个类没有这个属性,比如 h e l l o 的举例如果无指定的默认值默认是 {person.last-name}就是报错的,而且也不能指定默认值,但是如果这个类没有这个属性,比如hello的举例如果无指定的默认值默认是 person.lastname就是报错的,而且也不能指定默认值,但是如果这个类没有这个属性,比如hello的举例如果无指定的默认值默认是{person.hello}

3.Profile
方便切换环境,提供Profile功能
1.多Profile文件
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml
默认使用application.properties的配置;

这是我们的application配置
请添加图片描述
编写两个
请添加图片描述
请添加图片描述
此时运行的话,默认走的是application里面的8084
当我们需要走dev的端口号,在application里面激活

spring.profiles.active=dev
在运行的话走的就是8082端口
请添加图片描述
2.yml支持多文档块方式
把之前的注解掉
在application.yaml里面编写

server:
  port: 8081
spring:
  profiles:
    active: dev

---
server:
  port: 8082
spring:
  profiles: dev
---

server:
  port: 8083
spring:
  profiles: prod

如果不用spring.profiles.active激活的话,默认还是8081
运行显示:
请添加图片描述

3.激活指定的profile
1.spring.profiles.active
2.命令行的时候指定:
java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;
3.可以直接在测试的时候,配置传入命令行参数
4.虚拟机参数:
-Dspring.profiles.active=dev
这里就不一一展示了

4.配置文件加载位置

springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文

优先级由高到底:

  • –file:./config/
  • –file:./
  • –classpath:/config/
  • –classpath:/

高优先级的配置会覆盖低优先级的配置;

演示:

一开始的
请添加图片描述
然后我们默认走的是8081端口
我们创建config包
请添加图片描述
此时再运行走的就是8082端口
我们在当前项目目录下创建
请添加图片描述
那么走的就是8083
我们在项目路径下创建config包
请添加图片描述
它的优先级最大,此时走的就是8084
SpringBoot会从这四个位置全部加载主配置文件,互补配置:
演示:
请添加图片描述
controller层是:

package com.qcby.controller;

import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class hello {
    @RequestMapping("/hello")
    public String hello(){
        return "boot03";
    }

}

运行结果:
请添加图片描述
也就是配置文件是互补的,当遇到相同配置,优先级高的会覆盖优先级低的

我们还可以通过spring.config.location来改变默认的配置文件位置
假如项目打包好了之后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置,指定配置文件和默认加载这些配置文件共同起作用形成互补配置
演示:
在桌面创建个application.properties
server.port=8085
将项目打包
请添加图片描述
点击最下面一行的Terminal,可以在里面输入命令
请添加图片描述
再启动的时候就是8085

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

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

相关文章

像uniapp image标签一样对图片进行缩放和裁剪

像uniapp image标签一样对图片进行缩放和裁剪 0 前言提示1 实现1.1 不保持纵横比缩放图片&#xff0c;使图片的宽高完全拉伸至填满 image 元素1.2 保持纵横比缩放图片&#xff0c;使图片的长边能完全显示出来。也就是说&#xff0c;可以完整地将图片显示出来。1.3 保持纵横比缩…

NCV7428D15R2G中文资料PDF数据手册参数引脚图图片价格概述参数芯片特性原理

产品概述&#xff1a; NCV7428 是一款系统基础芯片 (SBC)&#xff0c;集成了汽车电子控制单元 (ECU) 中常见的功能。NCV7428 为应用微控制器和其他负载提供低电压电源并对其进行监控&#xff0c;包括了一个 LIN 收发器。 产品特性&#xff1a; 控制逻辑3.3 V或5 V VOUT电源&…

JavaScript 使用 Promise 实现 sleep 休眠

以下为代码实现&#xff0c;该代码实现了每隔1秒打印一次当前时间&#xff0c;总共打印5次的功能 for(let i 1; i < 5; i){console.log(new Date().toString())await new Promise(resolve>setTimeout(resolve,1000)) }实现休眠的核心代码为: await new Promise(resolv…

挖掘网络宝藏:利用Scala和Fetch库下载Facebook网页内容

介绍 在数据驱动的世界里&#xff0c;网络爬虫技术是获取和分析网络信息的重要工具。本文将探讨如何使用Scala语言和Fetch库来下载Facebook网页内容。我们还将讨论如何通过代理IP技术绕过网络限制&#xff0c;以爬虫代理服务为例。 技术分析 Scala是一种多范式编程语言&…

在windows上安装Jenkins

jenkins安装 下载jenkins 官网&#xff1a;Jenkins download and deployment 官方文档说明&#xff1a;Jenkins User Documentation 安装jenkins1.点击下载好的安装包&#xff0c;点击Next 2.选择一个安装路径 如果系统是windows家庭版打不开策略就创建一个txt文件&#xff0c…

node.js常用的命令

Node.js 是一个用于执行 JavaScript 代码的运行时环境。以下命令是 Node.js 开发中常用的命令&#xff0c;可以帮助你进行包管理、项目配置和代码执行等操作。 node -v&#xff1a;检查 Node.js 的版本。npm -v&#xff1a;检查 npm&#xff08;Node.js 包管理器&#xff09;的…

企业工商年报注册注销商标注册异常处理小程序开源版开发

企业工商年报注册注销商标注册异常处理小程序开源版开发 1、独立业务模型包括&#xff1a;企业工商年报、企业工商登记注册、企业注销登记、企业异常处理。 2、通用业务模型适合各种业务&#xff0c;比如&#xff1a;商标注册代理、财务会计服务、企业版权登记登。 当然&…

2024 用CleanMyMac X为您的MAC清理提速吧

CleanMyMac X 是由 MacPaw 公司开发的一款针对 macOS 操作系统的电脑清理工具。它可以帮助用户清理电脑中的垃圾文件、卸载不需要的软件、优化电脑性能等。它的界面简洁明了&#xff0c;操作简单易懂&#xff0c;非常适合普通用户使用。 链接: https://pan.baidu.com/s/1_TFnrI…

Zookeeper(六)Zokeeper 使用场景案例

目录 一 数据发布/订阅1.1 配置变更1.2 代码实现1.3 启动测试 二 负载均衡2.1 实现2.2 代码2.3 启动测试 三 分布式ID3.1 代码实现3.2 效果 四 服务器集群监控五 分布式锁2.1 排他锁2.2 共享锁 官网&#xff1a;Apache ZooKeeper 一 数据发布/订阅 数据发布/订阅(Publish/Sub…

怎样修改grafana的Loading picture和加载的文本

登录装了grafana的linux机器 command “sudo vi /usr/share/grafana/public/views/index.html”&#xff0c;编辑配置文件。 找到.preloader__logo更改background-image. 这里可以是个url也可以是个路径。 如果想要更改加载的文字.可以更改 的内容 改完:wq保存以后退出&…

从键盘到屏幕:C语言中输入输出探秘

在编程中&#xff0c;输入和输出是我们与计算机交流的关键。无论是键盘输入还是屏幕输出&#xff0c;它们贯穿了我们每一行代码的编写。本文将带你深入探索C语言中输入输出的精彩世界&#xff0c;解锁其中的奥秘&#xff0c;助你轻松驾驭键盘和屏幕&#xff01;&#xff08;最后…

C++ List底层实现

文章目录 前言成员变量成员函数迭代器self& operator()前置self operator(int)后置self operator--()前置--self operator--(int)后置--bool operator!(const self & tmp)判断是否相等T* operator*() 解引用操作 list()初始化iterator begin()iterator end()const_iter…

年度告警分类统计

1、打开前端Vue项目kongguan_web&#xff0c;完成前端src/components/echart/YearWarningChart.vue页面设计 在YearWarningChart.vue页面添加div设计 <template><div class"home"><div style"margin: 0px auto;height: 100%"><div …

seleniumUI自动化实例(CSDN发布文章)

1.CSDN登陆成功后&#xff0c;点击发布 源码&#xff1a; #点击首页中的发布按钮 CSDNconf.driver.find_element(By.LINK_TEXT,"发布").click() time.sleep(15) 2.输入标题 #输入文章标题&#xff0c;标题格式“selenium UI自动化测试实例今天的日期” CSDNconf.d…

「数据分析」之零基础入门数据挖掘

摘要&#xff1a;对于数据挖掘项目&#xff0c;本文将学习应该从哪些角度分析数据&#xff1f;如何对数据进行整体把握&#xff0c;如何处理异常值与缺失值&#xff0c;从哪些维度进行特征及预测值分析&#xff1f; 探索性数据分析&#xff08;Exploratory Data Analysis&#…

期刊如何反击一波可疑图像

出版商正在部署基于人工智能的工具来检测可疑图像&#xff0c;但生成式人工智能威胁着他们的努力。 期刊正在努力检测用于分析蛋白质和DNA的凝胶的操纵图像。图片来源&#xff1a;Shutterstock 似乎每个月都会有一系列针对研究人员的新高调指控&#xff0c;这些研究人员的论文…

正则表达式具体用法大全

# 正则表达式&#xff1a; ## 单字符匹配&#xff1a; python # 匹配某个字符串&#xff1a; # text "abc" # ret re.match(b,text) # print(ret.group()) # 点&#xff08;.&#xff09;&#xff1a;匹配任意的字符(除了\n)&#xff1a; # text "\nabc&quo…

《论文阅读》带边界调整的联合约束学习用于情感原因对提取 ACL 2023

《论文阅读》带边界调整的联合约束学习用于情感原因对提取 前言简介Clause EncoderJoint Constrained LearningBoundary Adjusting损失函数前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《Joint Cons…

Photoshop 2024让图像处理更智能、更高效@

Photoshop 2024是一款功能强大的图像处理软件&#xff0c;广泛应用于创意设计和图像处理领域。它提供了丰富的绘画和编辑工具&#xff0c;包括画笔、铅笔、颜色替换、混合器画笔等&#xff0c;使用户能够轻松进行图片编辑、合成、校色、抠图等操作&#xff0c;实现各种视觉效果…

如何处理WordPress网站域名循环重定向

我在 HostEase 搭建了一个 WordPress 网站。在访问网站时出现了循环重定向的问题。经检查&#xff0c;发现是我在 .htaccess 文件中设置的重定向规则导致的。 重定向循环通常指的是一个网页或者URL地址在不断地进行重定向&#xff0c;最终形成一个循环&#xff0c;导致网页无法…