当前位置: 首页 > news >正文

【SpringBoot】

目录

一、Spring Boot概要

1. SpringBoot介绍

2. SpringBoot优点

3. SpringBoot缺点

4. 时代背景-微服务

二、Spring Boot 核心配置

1. Spring Boot配置文件分类

1.1 application.properties

1.2 application.yml

1.3 小结

2. YAML概述

3. YAML基础语法

3.1 注意事项

3.2 数据格式

4. 读取配置内容

4.1 逐个注入 @Vule(基本数据类型)

4.2 批量注入 @ConfigurationProperties

4.3 对比小结

5. JSR303数据校验

5.1 什么是 JSR303 标准

5.2 JSR303校验注解的使用步骤

6. 多环境切换profile

7. @RequestBody和@RequestMapping


一、Spring Boot概要

1. SpringBoot介绍

        它的设计是为了使您能够尽可能快地启动和运行。它使用 “习惯优于配置” (项目中存在大量的配置,而 Spring Boot 内置一个习惯性的配置,让你无须手动进行配置)的理念让你的项目快速运行起来。使用 Spring Boot 很容易创建一个独立运行(运行jar,内嵌 Servlet 容器)、准生产强力的基于 Spring 框架的项目,使用 Spring Boot你可以不用或者只需要很少 的 Spring 配置。提供了 J2EE 开发的一站式解决方案。

        2014 年 4 月,Spring Boot 1.0.0 发布。Spring的顶级项目之一(https://spring.io)。

2. SpringBoot优点

        SpringBoot是整合Spring技术栈的一站式框架。

        SpringBoot是简化Spring技术栈的快速开发脚手架。

        Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。

(1)创建独立Spring应用

(2)内嵌web服务器

(3)自动starter依赖,简化构建配置

(4)起步依赖 ,起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM), 定义了对其他库的传递依赖 ,这些东西加在一起即支持某项功能。 简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能

(5)自动配置Spring以及第三方功能

(6)提供生产级别的监控、健康检查及外部化配置

(7)无代码生成、无需编写XML

3. SpringBoot缺点

(1)人称版本帝,迭代快,需要时刻关注变化

(2)封装太深,内部原理复杂,不容易精通

4. 时代背景-微服务

(1)微服务是一种架构风格

(2)一个应用拆分为一组小型服务

(3)每个服务运行在自己的进程内,也就是可独立部署和升级

(4)服务之间使用轻量级HTTP交互

(5)服务围绕业务功能拆分

(6)可以由全自动部署机制独立部署

(7)去中心化,服务自治。服务可以使用不同的语言、不同的存储技术

二、Spring Boot 核心配置

springboot_init_01项目

1. Spring Boot配置文件分类

        SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用 application.properties或者application.yml(application.yaml)进行配置。

1.1 application.properties

语法结构 :key=value

1.2 application.yml

        语法结构 :key:空格 value (冒号后面必须要有空格

1.3 小结

        SpringBoot提供了2种配置文件类型:properteis和yml/yaml

        默认配置文件名称:application

        在同一级目录入如果三类文件共存,优先级为:properties > yml > yaml

2. YAML概述

        YAML全称是 YAML Ain't Markup Language 。YAML是一种直观的能够被电脑识别的的数据数据序列化格式。

        简洁,以数据为核心

3. YAML基础语法

3.1 注意事项

(1)大小写敏感

(2)数据值前边必须有空格,作为分隔符

(3)使用缩进表示层级关系

(4)缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的空格数目可能不同,导致层次混乱)。

(5)缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

(6)"#"表示注释,从这个字符一直到行尾,都会被解析器忽略

3.2 数据格式

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

(2)数组:一组按次序排列的值( List、set )

        使用 " - "表示数组每个元素。

(3)对象、Map(键值对)

(4)yaml引用(${key}

4. 读取配置内容

        yaml文件更强大的地方在于,他可以给我们的实体类直接注入匹配值!

        支持方式:

                逐个注入:@Value

                批量注入:(1)@ConfigurationProperties

                                  (2)Environment类

4.1 逐个注入 @Vule(基本数据类型)

        application.yml

4.2 批量注入 @ConfigurationProperties

        @ConfigurationProperties作用:将配置文件中配置的每一个属性的值,映射到这个组件中;告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定

        参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应。

4.3 对比小结

(1)@ConfigurationProperties只需要写一次即可,@Value则需要每个字段都添加

(2)松散绑定:这个什么意思呢? 比如我的yml中写的last-name,这个和lastName是一样的,- 后面跟着的字母默认是大写的。这就是松散绑定。

(3)JSR303数据校验,这个就是我们可以在字段是增加一层过滤器验证 , 可以保证数据的合法性。

(4)复杂类型封装,yml中可以封装对象,使用value就不支持

结论:

(1)配置yml和配置properties都可以获取到值,强烈推荐 yml;

(2)如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @value;

(3)如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接@configurationProperties,不要犹豫!

5. JSR303数据校验

        对于 web 服务来说,为防止非法参数对业务造成影响,在 Controller 一定要做参数校验的!大部分情况下,请求参数分为如下两种形式:

(1) POST 、PUT 请求,使用 requestBody 传递参数;

(2) GET 请求,使用 requestParam/PathVariable 传递参数。

5.1 什么是 JSR303 标准

        JSR的全称是Java Specification Requests(Java 规范提案,是指向JCP ( Java Community Process )提出新增一个标准化技术规范的正式请求。

5.2 JSR303校验注解的使用步骤

(1)添加依赖,导入spring-boot-starter-validation启动器

(2)在实体类需要校验的成员字段(Field)上,添加校验注解。

(3)方式一(在Controller控制器的校验参数前,使用@Valid注解开启校验,使用BindingResult 绑定校验结果。)

(4)方式二(Controller统一异常处理

@ControllerAdvice:统一为Controller进行"增强"

@ExceptionHandler : 异常处理

6. 多环境切换profile

        通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。其中数据库地址、服务 器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。

        profile功能就是来进行动态配置切换的;

(1)命名语法:

        例如:

                application-环境简称.properties/yml

                application-dev.properties/yml 开发环境

                application-test.properties/yml 测试环境

                application-pro.properties/yml 生产环境

(2)profile激活方式

        配置文件(application.yml):

7. @RequestBody和@RequestMapping

        @ResponseBody: 将方法返回值转换为json并响应给方法的请求者

        @RequestMapping: 处理用户请求


http://www.mrgr.cn/news/41698.html

相关文章:

  • LabVIEW混合控制器质量检测
  • 智慧校园建设方案
  • 黑科技!AI消除工具让照片大变身
  • 解决银河麒麟终端快捷键问题:“Ctrl+Alt+T”无法打开终端
  • 遥感影像-语义分割数据集:Landsat8云数据集详细介绍及训练样本处理流程
  • Python酷库之旅-第三方库Pandas(132)
  • 深入剖析Java事务:从CAP到分布式事务的全景探索
  • ffwin :使用 scoop + vs2022 打造编译开源源代码系统
  • 资源《Arduino 扩展板2-矩阵按钮 》说明。
  • 15分钟学 Python 第35天 :Python 爬虫入门(一)
  • 学校在线学习作业批改教学管理平台的设计与实现SpringBoot+VUE
  • 强大的JVM监控工具
  • 【2023工业3D异常检测文献】CPMF: 基于手工制作PCD描述符和深度学习IAD结合的AD方法
  • 【吊打面试官系列-MySQL面试题】Mysql中的事务回滚机制概述?
  • 15分钟学 Python :编程工具 Idea 和 vscode 中配置 Python ( 补充 )
  • 嵌入式操作系统选型:FreeRTOS、Zephyr、ThreadX与RTEMS的比较
  • 图解大模型计算加速系列:vLLM源码解析2,调度器策略(Scheduler)
  • 【大数据】在线分析、近线分析与离线分析
  • Python编写的贪吃蛇小游戏
  • 文章解读与仿真程序复现思路——高电压技术EI\CSCD\北大核心《适用于并联构网型储能系统的协调有功控制策略设计》