首页 > 其他分享 >Springboot笔记-05

Springboot笔记-05

时间:2024-03-20 18:02:21浏览次数:22  
标签:12 Springboot 配置文件 05 spring random 笔记 person name

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.last−name就是报错的,而且也不能指定默认值,但是如果这个类没有这个属性,比如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

标签:12,Springboot,配置文件,05,spring,random,笔记,person,name
From: https://blog.csdn.net/m0_72410274/article/details/136873167

相关文章

  • 【嵌入式学习笔记】---- OLED屏幕工作原理
    1驱动芯片SSD1603简介1.1SSD1603芯片图SSD1603是一款点阵显示屏控制器,可嵌入在屏幕中,用于执行接收数据、显示存储、扫描刷新等任务驱动接口:128个SEG引脚和64个COM引脚,对应\(128\times64\)像素点阵显示屏内置显示存储器(GDDRAM):\(128\times64Bit(或128\times64Byte)SRAM\)......
  • SpringBoot整合Mybatis(SpringBoot3)
    依赖pom.xml:pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://......
  • Java学习笔记——第二十一天
    网络编程概述网络编程是可以让设备中的程序与网络上其他设备中的程序实现数据交互的编程技术(实现网络通信的)。Java提供了哪些网络编程的包java.net.*包下提供了网络编程的解决方案。基本的通信架构基本的通信架构有2种形式:CS架构(Client客户端/Server服务端)、BS架构(Brow......
  • 做题笔记 IIII
    做题笔记II做题笔记III发现做题笔记屡次停更的根本原因是做的无聊题太多,不想更笔记,拖的时间长了笔记就更新不过来了。从这篇笔记开始只记录精彩巧妙的题。\(1\sim25\)\(\color{blue}(1)\)CF1270GSubsetwithZeroSum\(^*2700\);构造;图论;基环树给定长度为\(n\;......
  • springboot项目打包时提示“程序包xxx不存在,找不到符号”
    springboot多包工程,在使用maven进行打包的时候,一直提示“程序包xxx不存在,找不到符号”,但项目是可以正常启动运行的,开始一直以为是maven哪里没有配置好导致的,后来才发现原来是springboot的maven插件导致的。xxx-parent:顶级父工程xxx-a:子项目1xxx-b:子项目2xxx-c:子项目3依赖关系......
  • spring boot企业级开发教程学习笔记——第二章
    记录笔记。给亲友看的笔记,干劲十足(希望她看得懂,因为我不会教人)一.重要前提再次强调:springboot是为了优化spring的冗重的xml文件配置,spring的注解会更加丰富,但是springboot的思想还是跟着spring走。spring的重要思想是:说到容器,就必须要讲到一个东西Bean,按......
  • 软考备考复习笔记day2(校验码crc和海明码检错纠错)
    奇偶校验奇偶校验(ParityCodes)是通过在编码中增加一位校验位来使编码中1的个数为奇数(奇校验)或者为偶数(偶校验)。但该编码只能检错,但不能纠错。奇偶校验:码距为2。码距越大越容易纠错和检错仅检测出代码中奇数位数(奇数个0或1发生错误),不能发现偶数位数出错。奇数+偶数=奇数......
  • 深入理解Java虚拟机读书笔记
    1.双亲委派模型的兼容性优化    双亲委派模型在jdk1.2才开始,在以前是通过覆盖loadClass()方法来自定义类加载器,但是不做兼容,由于多态性,那么实际上加载时是直接用ClassLoader子类的loadClass()方法,ClassLoader的loadClass()方法不会被调用,所以为了兼容,添加了findClass(),这样自定义的类......
  • 江科大STM32学习笔记(上)
    @目录前言外设篇GPIO输出GPIO位结构GPIO模式外设的GPIO配置查看实战1:如何进行基本的GPIO输入输出OLED显示屏及调试Keil的调试模式演示EXTI外部中断NVIC基本结构EXTI结构代码实战2:如何使用中断和对射式红外传感器&旋转编码器TIM(Timer)定时器1.1基本定时器(TIM6和TIM7)1.1_1_时基单元......
  • SpringBoot添加跨域处理
    配置类实现WebMvcConfigurer接口重写addCorsMappings(CorsRegistryregistry)方法用registry对象添加映射路径、是否发送cookie、设置放行哪些原始域、放行哪行请求方法、放行哪些请求头信息、暴漏哪些请求头部信息@ConfigurationpublicclassCorsConfigimplements......