【檀越剑指大厂—SpringBoot】SpringBoot应用

news2024/11/17 9:54:58

一.配置

1.配置文件

SpringBoot 使用一个全局的配置文件,配置文件名称固定

  • application.properties
  • application.yml

配置文件的作用:修改 SpringBoot 自动配置的默认值;SpringBoot 在底层都给我们自动配置好

2.tomcat 配置

server:
  port: 8081
  error:
    path: /error
  servlet:
    session:
      timeout: 30m
    context-path: /start
  tomcat:
    uri-encoding: utf-8
    threads:
      max: 500
    basedir: /home/tmp
  • server.port 配直了 Web 器的端口号。
  • error.path 配直了当项目出错时跳转去的页面
  • session .timeout 配置了 session 失效时间 30m 表示 30 分钟,如果不写单位 默认单位是秒,由于 Tomcat 中配直 session 过期时间以分钟为单位,因此这里单位如果是秒的话,该时间会被转换为一个不超过所配置秒数的大分钟数, 例如这里配置了 119 ,默认单位为秒,则实际 session 过期时间为 1 分钟
  • context-path 表示项目名称,不配置时默认为/。如果配置了,就要在访问路径中加上配置的路径。
  • uri-encoding 表示配置 Tomcat 请求编码。
  • max threads 表示 Tomcat 最大线程数。
  • basedir 是一个存放 Tomcat 运行日志和临时文件的目录,若不配置,则默认使用系统的临时目录

3.打包配置

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

4.读取配置内容

读取配置的内容有三种方式,

  • @Value
  • Environment
  • @ConfigurationProperties

1.@Value

配置文件的名称要和表达式中的值一样, 表达式中有层级关系用.表示下一层

image.png

2.Environment

注入一个org.springframework.core.env.Environment的对象, 然后通过 env 对象来获取对象的属性

输入的参数方式和 value 的一样

image.png

3.@ConfigurationProperties

创建一个配置类, 将配置文件中的值全部注入到配置类中,在配置类中加上

Component,标识这是一个 spring 的 bean

ConfigurationProperties, 标识这是一个配置类

img

上面报红的是没有开启处理注解的依赖, 点击文档添加依赖的配置后,在写配置文件的时候会有对应的提示

但是使用时需要注意, ConfigurationProperties 需要指定前缀,不然无法读取到 person 类, 而是将整个 application.yml 文件当成 Person 类,按上面的运行只能读取到 name 是 abc。

5.profIle

我们在开发 Spring Boot 应用时,通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。其中数据库地址、服务器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。profile 功能就是来进行动态配置切换,编写多个配置文件, 启动时用spring.profiles.active来激活对应的配置文件

profile 激活方式

profile 激活的方式有 3 种,第一种方式是静态的已经在代码中写死, 第 2 3 种在程序启动时给指定具体的参数

  • 方式 1,配置文件

配置文件的方式, 就是上面那种在配置文件中指定

  • 方式 2, 虚拟机参数

在 VM options 指定:-Dspring-profiles.active:=dev

  • 方式 3, 命令行参数
java -jar xxx.jar --spring.profiles.active=dev
  • 配置文件: 再配置文件中配置:spring.profiles.active=dev
  • 虚拟机参数:在 VM options 指定:-Dspring.profiles.active=dev
  • 命令行参数:java –jar xxx.jar --spring.profiles.active=dev

6.监控

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

http://localhost:8080/acruator

http://localhost:8080/actuator/info

info.name=lucy
info.age=99

http://localhost:8080/actuator/health

management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*
{
  "_links": {
    "self": {
      "href": "http://localhost:8080/actuator",
      "templated": false
    },
    "health": {
      "href": "http://localhost:8080/actuator/health",
      "templated": false
    },
    "health-component-instance": {
      "href": "http://localhost:8080/actuator/health/{component}/{instance}",
      "templated": true
    },
    "health-component": {
      "href": "http://localhost:8080/actuator/health/{component}",
      "templated": true
    },
    "info": {
      "href": "http://localhost:8080/actuator/info",
      "templated": false
    }
  }
}

二.yaml

说明:语法要求严格!

1、空格不能省略

2、以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。

3、属性和值的大小写都是十分敏感的。

1.字面量

字面量:普通的值 [ 数字,布尔值,字符串 ]

k: v

2.对象和 Map

对象、Map(键值对)

#对象、Map格式
k:
    v1:
    v2:
student:
    name: qinjiang
    age: 3
student: {name: qinjiang,age: 3}

3.数组

数组( List、set )

pets:
 - cat
 - dog
 - pig
pets: [cat,dog,pig]

4.应用

@Component //注册bean
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;
}
person:
  name: qinjiang
  age: 3
  happy: false
  birth: 2000/01/01
  maps: {k1: v1,k2: v2}
  lists:
   - code
   - girl
   - music
  dog:
    name: 旺财
    age: 1

5.提示

<!-- 导入配置文件处理器,配置文件进行绑定就会有提示,需要重启 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>

image-20221219155545308

三.常见问题

1.生成代码

https://start.spring.io/

或者使用阿里云提供的 spring 脚手架, 功能更加强大基本上覆盖前者所有,同时有更多阿里开源组件的选择

spring 脚手架

2.cros 跨域支持

@Configuration
public class MyConfiguration {

	@Bean
	public WebMvcConfigurer corsConfigurer() {
		return new WebMvcConfigurer() {
			@Override
			public void addCorsMappings(CorsRegistry registry) {
				registry.addMapping("/api/**");
			}
		};
	}
}

3.自定义过滤器

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/");
    }
}

4.重定向

@GetMapping("/redirect/{id}")
public void redirect(@PathVariable("id") String id, HttpServletResponse resp) throws IOException {
  String redirectUri = "http://www.baidu.com";
  resp.sendRedirect(redirectUri);
}

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

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

相关文章

IDEA下使用Git与GitHub【超详细】

IDEA结合Git 初始化Git及提交 查看提交版本 切换版本 创建分支与切换 合并分支 ​编辑 分支冲突 IDEA结合GitHub 创建GitHub账号 上传代码到本地仓库 推送代码 拉取代码 克隆远程库到本地 这里是在学习完Git的基础指令来了解在企业合作开发下如何用集成工具联合Git…

Photoshop - 高反差保留

对图像处理相关学习的一些笔记归档发表&#xff0c;关于锐化的原理&#xff1b; 首先简而言之&#xff0c;当颜色明度为100%的时候&#xff0c;为白色&#xff0c;反之为黑色&#xff1a; 为50%时&#xff0c;就是中性灰&#xff1b; 在混合方式中&#xff0c;变暗这一组&…

JVM之虚拟机栈

1. 虚拟机栈概述 虚拟机栈不存在GC,但存在OOM,程序计数器二者都不存在 2. 栈的存储单位 3. 局部变量表 变量的分类&#xff1a;按照数据类型分&#xff1a;① 基本数据类型 ② 引用数据类型 按照在类中声明的位置分&#xff1a;① 成员变量&#xff1a;在使用前&#xff0c;都经…

【实时数仓】DWM层订单宽表之维表关联异步查询(续)、DWM层支付宽表需求分析、需求实现(源码)

文章目录一 DWM层-订单宽表1 维表关联代码实现&#xff08;1&#xff09;优化2&#xff1a;异步查询a 关联省市维度b 关联SKU维度c 关联SPU维度d 关联品类维度e 关联品牌维度f 最终结果展示&#xff08;2&#xff09;结果写入kafka sink二 DWM层-支付宽表1 需求分析与思路2 需求…

界面控件DevExpress WinForm v22.1——拥有全新的WXI调色板

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…

车载以太网解决方案,你知多少?

近年来&#xff0c;为了满足智能网联汽车的开发要求&#xff0c;车载以太网技术开始逐渐进入人们的视野。而以太网技术已经成为下一代车载络架构的趋势之一&#xff0c;其发展之迅猛&#xff0c;使得各主机厂纷纷产生了浓厚的兴趣并投入研发。 一 为什么使用车载以太网 | 对高…

UE4 GIS Cesium for Unreal插件使用

第一步&#xff1a;安装Cesium for Unreal插件 如果尚未安装&#xff0c;请先安装Cesium for Unreal插件。 在虚幻引擎市场上打开Cesium for Unreal插件页面。2. 登录虚幻引擎商城&#xff0c;并单击免费按钮&#xff0c;将插件安装在虚幻引擎中。 第二步&#xff1a;创建项…

这里有 10 个省时间的 PyCharm 技巧

0. PyCharm 常用快捷键 1. 查看使用库源码 经常听人说&#xff0c;多看源码。源码不仅能帮我们搞清楚运行机制&#xff0c;还能学习优秀的库或者框架的最佳实践。 调用库时&#xff0c;你可以在你好奇的几乎任何地方点击 CommandB&#xff0c;就可以很方便的跳转到源码里的类&…

电商项目6:商品模块-品牌管理

商品模块-品牌管理1、逆向工程生成菜单2、优化逆向生成的前端工程2.1、优化显示状态1、逆向工程生成菜单 将逆向工程生成的两个vue文件放置到前端项目&#xff0c;可以参考电商项目2逆向工程生成 将其两个vue文件复制到product目录下 然后重启前端项目 只有查询&#xff0c;…

【算法】子序列问题合集

前言 动态规划的核心设计思想是数学归纳法 假如我们想证明一个数学结论&#xff1a; 那么先假设这个结论在 k < n 时成立想办法推导证明出 k n 的时候此结论也成立。是需要一个 dp 数组嘛&#xff1f; 可以假设 dp[0...i - 1] 都已经被算出来了然后问自己&#xff1a;怎么…

记录Android Studio连接华为(nova)手机鸿蒙系统踩过的坑

目录 安装Android studio 安装Google USE Driver 查看华为手机的安卓版本 设置开发者模式 安装华为手机助手 重启Android studio 总结 安装Android studio 我主要参考的是这篇文章&#xff1a;Android基础&#xff08;android studio最详细基础使用功略&#xff09;_手下…

14考虑电动汽车可调度潜力的充电站两阶段市场投标策略

参考文献 考虑电动汽车可调度潜力的充电站两阶段市场投标策略——詹祥澎&#xff08;电力系统自动化,2021&#xff09; 主要内容 在电力市场环境下,充电站优化投标策略能降低电力成本&#xff0c;甚至通过售电获取收益。本程序考虑了电动汽车成为柔性储荷资源的潜力&#xf…

【目标检测】只需一张图~YOLOv5原理懂了~

目录 一、简介 二、模型结构 1.整体结构图 2.Backbone&#xff08;CSPDarknet&#xff09; 3.SPPF&#xff08;Spatial Pyramid Pooling - Fast&#xff09; 4.Neck&#xff08;FPNPAN&#xff09; 5.Head 三、anchor编解码 1.anchor编码 2.anchor解码 四、损失函数 …

一文读懂Go函数调用

导读&#xff5c;Go的函数调用时参数是通过栈传递还是寄存器传递&#xff1f;使用哪个版本的Go语言能让程序运行性能提升5%&#xff1f;腾讯后台开发工程师涂明光将带你由浅入深了解函数调用&#xff0c;并结合不同版本Go进行实操解答。函数调用基本概念1&#xff09;调用者cal…

【服务器数据恢复】Linux服务器重装系统后出现空白超级块的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌X系列服务器&#xff1b; linux操作系统&#xff1b; 4块SAS接口硬盘组建raid5磁盘阵列。 服务器故障&检测&#xff1a; 服务器运行过程中由于未知原因突然瘫痪&#xff0c;用户为故障服务器重新安装操作系统&#xff0c;安装完成后发…

【车载开发系列】UDS诊断---基于事件响应($0x86)

【车载开发系列】UDS诊断—基于事件响应&#xff08;$0x86&#xff09; 诊断---基于事件响应&#xff08;$0x86&#xff09;【车载开发系列】UDS诊断---基于事件响应&#xff08;$0x86&#xff09;一.概念定义二.注意事项三.报文格式1&#xff09;请求报文2&#xff09;肯定响应…

Java+MySQL基于ssm家教服务平台

随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xff0c;采用SSM框架建设家教服务平台。 本毕业设计主…

11个案例讲透 Python 函数参数

今天给大家分享一下自己整理的一篇 Python 参数的内容&#xff0c;内容非常的干&#xff0c;全文通过案例的形式来理解知识点&#xff0c;自认为比网上 80% 的文章讲的都要明白&#xff0c;如果你是入门不久的 python 新手&#xff0c;相信本篇文章应该对你会有不小的帮助。 接…

第5章 高级SQL

第5章 高级SQL 考试范围&#xff1a; 5.2 -5.3 考试题型&#xff1a; 计算题 考试内容&#xff1a; 函数、过程和触发器的概念 会定义和调用函数、过程 会定义触发器 函数、过程和触发器的概念 函数&&过程 存储过程和函数是一组为了完成特定功能的SQL语句集&…

如何用pgloader将Zabbix的MySQL数据库迁移到PostgreSQL数据库?

感谢本文作者 董玉凡 &#xff0c;Zabbix工程师 摘 要 ►今天我们使用一款工具pgloader来进行从Zabbix的MySQL数据库将数据迁移到PostgreSQL数据库。 ►pgloader是一款开源软件项目&#xff0c;可以将各种来源的数据加载到PostgreSQL当中&#xff0c;可以支持动态读取的数据…