快速上手 Spring Boot:基础使用详解

快速上手 Spring Boot:基础使用详解


文章目录

      • 快速上手 Spring Boot:基础使用详解
        • 1、什么是SpringBoot
        • 2、Springboot快速入门搭建
        • 3、SpringBoot起步依赖
        • 4、SpringBoot自动配置:以tomcat启动为例
        • 5、SpringBoot基础配置
        • 6、yaml
        • 7、多环境开发配置

1、什么是SpringBoot
  • Spring Boot 是一个基于 Spring 的框架,旨在简化 Spring 应用的配置和开发过程,通过自动配置和约定大于配置的原则,使开发者能够快速搭建独立、生产级别的应用程序。
  • Spring程序缺点
    • 配置繁琐
    • 依赖设置繁琐
  • SpringBoot程序优点
    • 自动配置
    • 起步依赖(简化依赖配置)
    • 版本锁定
    • 内置tomcat服务器
    • 辅助功能(内置服务器,……)

image-20240624133659707

2、Springboot快速入门搭建

新建项目选择Spring Initializr

因为官网网速会很慢,这边Server URL可以修改成国内阿里云地址:https://start.aliyun.com

image-20240624134554730

在下一步之后,可以选择Springboot版本并添加Spring web依赖,最后点击完成就可以了

image-20240624134929778

找到springboot启动类,点击运行测试

image-20240624135415105

在日志中,我们可以看到java的版本,tomcat版本和端口,我们并没有配置tomcat,这也说明了Springboot是内置了tomcat的

image-20240624135945548

可以写个代码进行测试一下,之后访问localhost:8080/user

@RestController
@RequestMapping("/user")
public class UserController {@GetMapping()public String getUser(){return "hello springboot";}
}

image-20240624140057391

3、SpringBoot起步依赖
  • starter
    • SpringBoot中常见项目名称,定义了当前项目使用的所有项目坐标,以达到减少依赖配置的目的
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.0</version></parent><groupId>com.demo</groupId><artifactId>springboot-01-quickstart</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>
<project xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.5.0</version><packaging>pom</packaging><properties><servlet-api.version>4.0.1</servlet-api.version>        ...</properties>
</project>
  • parent
    • 所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.5.0</version></parent><artifactId>spring-boot-starter-parent</artifactId><packaging>pom</packaging>    ...
</project>
  • 实际开发
    • 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供
    • 如发生坐标错误,再指定version(要小心版本冲突)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.0</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
</project>
  • SpringBoot程序启动
@SpringBootApplication
public class SpringBootQuickStartApplication {public static void main(String[] args) {SpringApplication.run(SpringBootQuickStartApplication.class, args);}
}
  • SpringBoot在创建项目时,采用jar的打包方式

  • SpringBoot的引导类是项目的入口,运行main方法就可以启动项目

  • 使用maven依赖管理变更起步依赖项

4、SpringBoot自动配置:以tomcat启动为例
  1. 查看自动配置的spring-boot-autoconfigure的包下的配置文件spring.factories

    image-20211111095034617

  2. 文件中包含所有Web容器(Tomcat)自动启动的配置类

    org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration,\ 
    
  3. 找到Tomcat的启动类

    image-20211111095218997

  4. 进入ServerProperties类中查看代码,可以看到端口号的set方法

    public void setPort(Integer port) {this.port = port;
    }
    
  5. 在ServerProperties类中存在一个静态内部类Tomcat,配置了服务器的属性

    image-20211111104522426

  6. 查看默认配置:spring-configuration-metadata.json文件,大约在1213行

    {"name": "server.port","type": "java.lang.Integer","description": "Server HTTP port.","sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties","defaultValue": 8080
    }
    
5、SpringBoot基础配置

配置格式

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

  • application.properties
server.port=80
  • application.yml
server:port: 81
  • application.yaml
server:port: 82

image-20240624150052367

SpringBoot配置文件加载顺序

  • application.properties > application.yml > application.yaml

注意事项:

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

什么是yaml,和properties有什么区别?

  • YAML(YAML Ain’t Markup Language),一种数据序列化格式
  • 优点:
    • 容易阅读
    • 容易与脚本语言交互
    • 以数据为核心,重数据轻格式
  • YAML文件扩展名
    • .yml(主流)
    • .yaml

yaml语法规则

  • 大小写敏感

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

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

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

    student:name: xiaolinage: 18
    
  • #表示注释

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

数据读取

stu:name: '小林'age: 18

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

@Value("${stu.name}")
String name;@Value("${stu.age}")
Integer age;

2.封装全部数据到Environment对象

注:数组元素也只能一个个取出来

image-20210811195823054

3.自定义对象封装指定数据【常用】

  • 将对象添加Spring容器中,在类上添加@Component注解
  • 在类上添加@ConfigurationProperties(prefix=“指定前缀”)
  • 添加get和set方法,toString方法
  • 在控制器中注入下面Enterprise对象
@Component
@ConfigurationProperties(prefix = "enterprise")
@Data
public class Enterprise {private String name;private Integer age;private String tel;private String subject[];
}

注:如果使用lombok需要在pom.xml中导入坐标

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>

image-20210811195844691

当输入@ConfigurationProperties注解的时候,自定义对象封装数据警告解决方案

image-20210815102251887

在pom.xml文件添加以下

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>
7、多环境开发配置

在实际开发中,项目的开发环境、测试环境、生产环境的配置信息是否会一致?如何快速切换?

多环境启动配置

  • yaml文件多环境启动

image-20210811195942997

基本配置

image-20210811200002937

新的写法

image-20210811200030710

application.yml

spring:profiles:active: pro---
spring:config:activate:on-profile: pro
server:port: 80---
spring:config:activate:on-profile: test
server:port: 81---
spring:config:activate:on-profile: dev
server:port: 82
  • 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

多环境启动命令格式

  • 带参数启动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

多环境开发控制

Maven与SpringBoot多环境兼容(步骤)

先将application.properties中配置全部先注释了

  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>
  1. SpringBoot中引用Maven属性

image-20210811200516648

  1. 对资源文件开启对默认占位符的解析
<build><plugins><plugin><artifactId>maven-resources-plugin</artifactId><configuration><encoding>utf-8</encoding><useDefaultDelimiters>true</useDefaultDelimiters></configuration></plugin></plugins>
</build>
  1. 启动查看控制台输出的结果

    image-20211109192235590

注:如果application-dev.properties中的配置也存在,则优先使用这里面的配置,再使用yml中的配置

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

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

相关文章

使用Ghostscript将PostScript(.ps)文件转换为PDF文件格式

如何使用Ghostscript将PostScript文件转换为PDF文件格式: /* Example of using GS DLL as a ps2pdf converter. */#if defined(_WIN32) && !defined(_Windows) # define _Windows #endif #ifdef _Windows /* add this source to a project with gsdll32.dll, or comp…

顶尖项目经理都在用的SOP

接受任务SOP 了解任务背景了解任务目标&#xff08;包含deadline&#xff09;拆解任务&#xff0c;确认负责人执行方案审批确认跟进执行并定期汇报验收结果&#xff0c;进行反馈相关文档存档&#xff0c;形成闭环 推进任务SOP - PDCA循环 制定计划 Plan。依据目标&#xff0c…

MacBook Pro 忘记root用户密码,重置密码步骤

一、以普通用户名登录系统&#xff0c;并打开terminal终端&#xff0c; 输入&#xff1a;sudo bash sudo bash Password:*****&#xff08;输入当前用户的密码&#xff09; 成功后进入bash-3.2#的命令模式 二、在bash-3.2#命令模式下 输入&#xff1a;sudo passwd root sud…

生信算法8 - HGVS转换与氨基酸字母表

HGVS 概念 HGVS 人类基因组变异协会(Human Genome Variation Society)提出的转录本编号&#xff0c;cDNA 参考序列(以前缀“c.”表示)、氨基酸参考序列(以前缀“p.”表示)。cDNA 中一种碱基被另一种碱基取代&#xff0c;以“>”进行表示&#xff0c;如&#xff1a;c.2186A&…

python数据分析——数据预处理

数据预处理 前言一、查看数据数据表的基本信息查看info&#xff08;&#xff09;示例 查看数据表的大小shape&#xff08;&#xff09;示例 数据格式的查看type()dtype&#xff08;&#xff09;dtypes&#xff08;&#xff09;示例一示例二 查看具体的数据分布describe()示例 二…

算法常见手写代码

1.NMS def py_cpu_nms(dets, thresh):"""Pure Python NMS baseline."""#x1、y1、x2、y2、以及score赋值x1 dets[:, 0]y1 dets[:, 1]x2 dets[:, 2]y2 dets[:, 3]scores dets[:, 4]#每一个检测框的面积areas (x2 - x1 1) * (y2 - y1 1)#按…

Windows环境如何ssh远程连接本地局域网内的Archcraft系统

文章目录 前言1. 本地SSH连接测试2. Archcraft安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接小结 5. 固定SSH公网地址6. SSH固定地址连接 前言 本文主要介绍如何在Archcraft系统中安装Cpolar内网穿透工具,并以实现Windows环境ssh远程连接本地局域网Archcraft系统来说明使用…

相位和展开相位

相位 (Phase) 相位是一个周期信号在一个周期内的位置&#xff0c;通常以角度&#xff08;度或弧度&#xff09;表示。在许多应用中&#xff0c;相位被限制在一个周期内。例如&#xff0c;相位通常被限定在 −180∘到 180∘ 或 0∘ 到 360∘ 之间。 示例 −90∘ 表示信号在周…

从基础到高级:视频直播美颜SDK的开发教学

本篇文章&#xff0c;小编将从基础到高级&#xff0c;详细讲解视频直播美颜SDK的开发过程&#xff0c;帮助开发者更好地掌握这一技术。 一、基础知识 什么是视频直播美颜SDK&#xff1f; 视频直播美颜SDK包含了一系列用于视频处理的功能模块&#xff0c;特别是美颜效果的实现…

C++支持哪些继承类型?

在C中&#xff0c;继承是一种面向对象编程&#xff08;OOP&#xff09;的特性&#xff0c;它允许一个类&#xff08;称为派生类或子类&#xff09;使用另一个类&#xff08;称为基类或父类&#xff09;的属性和方法。这种机制提高了代码的重用性&#xff0c;减少了代码的冗余&a…

Linux高并发服务器开发(一)GCC和Make

文章目录 1 工作流程2 静态库和动态库连接2.1 静态连接2.2 动态链接 3 静态库制作和使用4 动态库的制作和使用5 GDB 调试器6 Makefile 1 工作流程 第一步预处理&#xff0c;生成.i 第二部生成汇编文件.s 第三部生成目标代码.o 第四部生成可执行文件 2 静态库和动态库连接 2.1…

使用Mixamo极简绑骨,导入unity中使用

如果你只想专注于角色建模&#xff0c;对于动画设计没有过多精力&#xff1b;如果你想白嫖别人的角色动画&#xff0c;用到自己的模型上&#xff1b;那么&#xff0c;这个网站很适合你&#xff1a;https://www.mixamo.com/ 操作步骤&#xff1a; 首先将自己的模型上传到这个网…

精确控制激励功率,保障晶振正常工作

随着科技的发展&#xff0c;晶振在电子产品中的应用越来越广泛。作为电路中的重要组成部分&#xff0c;晶振的性能直接影响着整个电路的稳定性和可靠性。激励功率是影响晶振性能的关键因素之一&#xff0c;因此&#xff0c;对晶振激励功率的控制至关重要。 一、激励功率的含义…

海外短剧系统,开启你的国际视野

一、海外短剧系统是一个创新且富有吸引力的平台&#xff0c;它能够为用户提供来自世界各地的精彩短剧&#xff0c;从而开启用户的国际视野。 1、文化多样性&#xff1a;海外短剧系统汇集了来自不同国家和地区的短剧作品&#xff0c;这些作品反映了各自独特的文化背景和社会风貌…

在 Git 中创建新分支

在 Git 中创建新分支非常简单。你可以使用 git branch 命令来创建一个新的分支。以下是如何创建新分支的步骤&#xff1a; 首先&#xff0c;确保你当前在 Git 仓库的某个分支上。你可以使用 git status 来查看你当前所在的分支。 使用 git branch <branch-name> 命令来创…

主变变压器保护屏组成,功能介绍

主变变压器保护屏组成&#xff0c;功能介绍 在电力系统中&#xff0c;主变变压器是核心设备之一&#xff0c;对于保障电力系统的稳定运行起着至关重要的作用。为了确保主变变压器的正常运行&#xff0c;需要采用各种保护措施。其中&#xff0c;主变变压器保护屏是其中的重要组成…

Bootstrap 5 网格系统

Bootstrap 5 网格系统 Bootstrap 5 是目前最流行的前端框架之一,它提供了一套强大的网格系统,帮助开发者快速构建响应式布局。本文将详细介绍 Bootstrap 5 的网格系统,包括其工作原理、使用方法以及最佳实践。 什么是 Bootstrap 网格系统? Bootstrap 网格系统是一种基于…

高效DEBUG事务正确性BUG

作者&#xff1a;张旭 MO研发工程师 目录 Part 1. 事务回顾 Part 2. 事务的正确性问题 Part 3. 如何高效 DEBUG 熟悉数据库分布式事务的读者&#xff0c;应该能够理解DEBUG分布式事务正确性问题的BUG是一件非常有挑战的事情。本文主要是给大家介绍一下&#xff0c;MatrixO…

可平滑替代传统FTP的国产FTP方案,了解一下

企业在处理数据传输时&#xff0c;效率和安全性是关键。尽管传统FTP曾被广泛采用&#xff0c;然而&#xff0c;随着企业业务需求的增长&#xff0c;传统FTP在传输速度、安全性、稳定性以及可控性方面的不足逐渐显现。许多企业正在寻找更为高效、安全且用户体验更好的的国产FTP方…

视频监控EasyCVR视频汇聚/智能边缘网关:EasySearch无法探测到服务器如何处理?

安防监控EasyCVR智能边缘网关/视频汇聚网关/视频网关属于软硬一体的边缘计算硬件&#xff0c;可提供多协议&#xff08;RTSP/RTMP/国标GB28181/GAT1400/海康Ehome/大华/海康/宇视等SDK&#xff09;的设备接入、音视频采集、视频转码、处理、分发等服务&#xff0c;系统具备实时…