Spring Boot框架

news2024/11/26 3:43:28

一.SpringBoot简介

1.1 设计初衷

目前我们开发的过程当中,一般采用一个单体应用的开发采用
SSM等框架进行开发,并在 开发的过程当中使用了大量的xml
等配置文件,以及在开发过程中使用MAVEN的构建工具来进
行构建项目,但是往往有时也会出现依赖的一些冲突,而且开
发的时候测试还需要下载和使用tomcat等等这些servlet容
器,所以开发的效率不高。
那么在以上的问题中,我们就可以使用springboot来解决这些
问题,当然他不仅仅是解决这些问题,来提高我们的开发人员
的开发效率。使用springboot:可以不需要配置,可以不需要
自己单独去获取tomcat,基本解决了包依赖冲突的问题,一键
发布等等特性。

1.2 SpringBoot介绍

Spring Boot 可以帮助我们开发 基于Spring的 、独立的 、生
产级的 应用程序。
        为所有Spring开发提供更快的入门体验
        开箱即用,提供了自动配置
        提供一系列大型项目通用的非功能性特性

外部化配置:

嵌入式服务器


安全性


健康检查


指标:

完全不需要代码生成,也不需要XML配置
springboot 就是一个基于spring的一个框架。提供了一些
自动配置的依赖包,自动嵌入servlet的容器,简化了我们
开发的配置,提升开发人员的开发效率,并解决了包依赖
的问题。

二.SpringBoot入门案例

2.1 快速入门

创建Maven工程
2. pom.xml文件中配置起步依赖
3. 编写SpringBoot启动引导类
4. 编写HelloController
5. 访问http://localhost:8080/hello测试

创建Maven工程

pom.xml文件中配置起步依赖

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lzw</groupId>
<artifactId>springboot_01</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<!--所有的springboot工程需要继承的父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.10.RELEASE</version>
</parent>

<dependencies>
<!--web开发的相关依赖 场景启动器依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

</dependencies>
</project>

编写SpringBoot启动引导类

简单点这个就相当于Spring的配置类

/**
* @SpringBootApplication 标识是SpringBoot的启动类
*/
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}

编写HelloController
 

@RestController
public class HelloController {
@RequestMapping("/hello")
public String Hello(){
return "hello SpringBoot";
}
}

访问http://localhost:8080/hello测试

2.2 @SpringBootApplication分析

@SpringBootApplication是一个组合注解

@SpringBootConfiguration注解作用
       * @SpringBootConfiguration是对@Configuration注解
        的包装,proxyBeanMethods 默认配置 true, full模式
        (单例Bean)
        标识是一个配置类,所以 引导类也是配置类
@ComponentScan注解作用
       * 组件扫描,默认扫描的规则 引导类所在的包及其子包所
        有带注解的类

2.3 添加父工程坐标分析

通过点击spring-boot-starter-parent父工程发现,它的父工
程是:

进入到spring-boot-dependencies工程中发现:声明了所有
开发中常用的依赖的版本号,自动版本号的控制(当然也可以
修改)。我们的项目需要以这个项目为父工程,这样我们就不
用操心依赖的版本问题了,需要什么依赖,直接引入坐标(不
需要添加版本)即可!

见到的spring-boot-starter-*: 第三方为我们提供的简化开发
的[场景启动器]

2.4 关于stater分析

再次从工程中 点击spring-boot-starter-web进入依赖管理:

分析spring-boot-starter-web依赖发现:内部把关于web
MVC开发所有的依赖都已经导入并且版本控制完成了,我们
只需引入 spring-boot-starter-web 这个依赖就可以实现我们
的 Web MVC的功能!

总结:

所有SpringBoot项目要继承的项目,定义了若干个坐标版
本号(依赖管理,而非依赖),以达到减少依赖冲突的目

starter是SpringBoot中常见项目名称,定义了当前项目使
用的所有项目坐标,以达到减少依赖配置的目的
 

三.SpringBoot配置文件

3.1 三种配置文件及优先级

SpringBoot是约定大于配置的,所以很多配置都有默认值。
如果想修改默认配置,可以用application.properties或
application.yml(application.yaml)自定义配置。SpringBoot
默认从Resource目录加载自定义配置文件。

配置文件必须放置在项目的类加载目录下, 并且名字必须是
application

属性配置文件:application.properties

yml文件:application.yml

yaml文件:application.yaml

文件加载的优先级

3.2 yml配置文件

yml介绍
YML文件格式是YAML(YAML Aint Markup Language)编写的
文件格式。可以直观被电脑识别的格式。容易阅读,容易与脚
本语言交互。可以支持各种编程语言(C/C++、Ruby、
Python、Java、Perl、C#、PHP)。以数据为核心,比XML更
简洁
。扩展名为.yml或.yaml;

配置文件语法:

*大小写敏感
*数据值前边必须有空格,作为分隔符
*使用缩进表示层级关系
*缩进不允许使用tab,只允许空格
*缩进的空格数不重要,只要相同层级的元素左对齐即可
*数组和集合使用 “- ”表示数组每个元素。减号与数据间
空格分隔
*#’表示注释,从这个字符一直到行尾,都会被解析器忽略。

3.3 获取配置文件中值

方式1:使用@value注解的方式 只能获取简单值
方式2. 使用@ConfigurationProperties

使用@value注解的方式

@RestController
public class HelloController {
@Value("${employee.empId}")
private Integer empId;
@Value("${employee.empName}")
private String empName;
@Value("${employee.empSalary}")
private Double empSalary;
@Value("${employee.address[0]}")
private String addr;
@RequestMapping("/hello")
public String Hello(){
System.out.println(empId+"..."+empName+"..."+empSalary+"..."+addr);
return "hello SpringBoot";
}
}

使用@ConfigurationProperties

通过注解@ConfigurationProperties(prefix=''配置文件中的
key的前缀")可以将配置文件中的配置自动与实体进行映射。
使用@ConfigurationProperties方式必须提供Setter方法,使
用@Value注解不需要Setter方法。

创建一个Employee实体类:

@Component
@ConfigurationProperties(prefix = "employee")
public class Employee {
private Integer empId;
private String empName;
private Double empSalary;
private String[] address;
public Integer getEmpId() {
return empId;
}
public void setEmpId(Integer empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Double getEmpSalary() {
return empSalary;
}
public void setEmpSalary(Double empSalary) {
this.empSalary = empSalary;
}
public String[] getAddress() {
return address;
}
public void setAddress(String[] address) {
this.address = address;
}
@Override
public String toString() {
return "Employee{" +
"empId=" + empId +
", empName='" + empName + '\'' +
", empSalary=" + empSalary +
", address=" +
Arrays.toString(address) +
'}';
}
}
@RestController
public class HelloController {
@Autowired 
private Employee employee;
@RequestMapping("/hello")
public String Hello(){
System.out.println(employee);
return "hello SpringBoot";
}
}
自定义对象封装数据解决警告
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
四.SpringBoot多环境配置

4.1 yml文件多环境开发配置

Spring Boot项目中配置文件的名称只能是application , 如果
我们把所有的配置全都写在一个配置文件中如果配置项比较
多, 配置文件就会显得比较复杂和臃肿 ! 不利于后期的项目维
护和开发
因为开发环境变化, 我们需要修改配置文件中某一个配置项
的值(比如之前是mysql数据库,切换oracle数据库)
项目开发完成需要上线了 , 需要把一些环境修改成正式环
境(开发,测试,上线,多环境切换)

解决方案 :使用profiles拆分配置

spring boot项目中允许使用多个YAML配置文件。


这些文件名称必须为application-*.yml,并且在
application.yml中激活。


application-dev.yml

application-test.yml

application-pro.yml

在application.yml激活

        *添加打包插件
jar支持命令行启动需要依赖maven插件支持,请确认打包时
是否具有SpringBoot对应的maven插件

<!-- SpringBoot应用打包插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

在idea点击package进行打包

4.3 多环境启动命令格式

4.4 配置文件位置分类

位置:
file :config/application.yml 【最高】
file :application.yml
classpath:config/application.yml
classpath:application.yml 【最低】


作用:
1级与2级留做系统打包后设置通用属性
3级与4级用于系统开发阶段设置通用属性

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

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

相关文章

【C++】vector 类深度解析:探索动态数组的奥秘

&#x1f31f;快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。 &#x1f31f; 如果你对string类还存在疑惑&#xff0c;欢迎阅读我之前的作品 &#xff1a; &#x1f449;【C】string 类深度解析&#xff1a;…

windows——病毒的编写

声明 学习视频来自B 站up主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 windows基础 我们学习了前面的window…

STM32 + CubeMX + 硬件SPI + W5500 +UDP

这篇文章记录一下STM32W5500UDP的调试过程&#xff0c;实现UDP数据的接收与发送。 目录 一、W5500模块介绍二、Stm32CubeMx配置三、Keil代码编写1、添加W5500驱动代码到工程&#xff08;添加方法不赘述&#xff0c;驱动代码可以在官网找&#xff09;2、在工程中增加代码&#…

原来大佬的测试用例都是这样写的...

1、测试点与测试用例 测试点不等于测试用例&#xff0c;这是我们首先需要认识到的。 问题1&#xff1a;这些测试点在内容上有重复&#xff0c;存在冗余。 问题2&#xff1a;一些测试点的测试输入不明确&#xff0c;不知道测试时要测试哪些。 问题3&#xff1a;总是在搭相似…

【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入

【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入 Med-BERT:pretrained contextualized embeddings on large-scale structured electronic health records for disease prediction ​ ​ 摘要:基于电子健康记录(EHR)的深度学习(DL)预…

天锐绿盾加密软件与Ping32 — 数据安全与性能优化的完美结合

在数字化时代&#xff0c;企业对数据安全的重视程度日益增加。随着网络攻击和数据泄漏事件频发&#xff0c;选择合适的安全解决方案显得尤为重要。天锐绿盾与Ping32作为两款备受推崇的安全软件&#xff0c;各自为企业提供了独特的功能和优势&#xff0c;共同为企业的数据安全和…

随身WiFi三网切换靠谱吗?格行随身WiFi网速怎么样?

出门在外手机流量不够用&#xff0c;连接公共WIFI网速不稳定还存在安全隐患。小巧便携的随身WIFI成了外出用网的首选。面对市面上不同品牌&#xff0c;不同类型的随身WIFI不少朋友不免心生疑问&#xff1a;随身WIFI到底值不值得买&#xff1f;究竟是不是“智商税”&#xff1f;…

服务器数据恢复—SAN环境中LUN映射错误导致文件系统一致性出错的数据恢复案例

服务器数据恢复环境&#xff1a; SAN光纤网络环境&#xff0c;存储由一组6块硬盘组建的RAID6阵列构成&#xff0c;划分为若干LUN&#xff0c;MAP到跑不同业务的SUN SOLARIS操作系统服务器上。 服务器故障&分析&#xff1a; 因为业务需要&#xff0c;用户在该光纤存储环境中…

【skywalking 】More than 15,000 ‘grammar‘ tokens have been presented. 【未解决请求答案】

问题 skywalking相关版本信息 jdk&#xff1a;17skywalking&#xff1a;10.1.0apache-skywalking-java-agent&#xff1a;9.3.0ElasticSearch : 8.8.2 问题描述 More than 15,000 grammar tokens have been presented. To prevent Denial Of Service attacks, parsing has b…

004-Kotlin界面开发快速入水之TicTacToe

程序界面和效果 快速入水 要学习一样跟程序设计有关的东西&#xff0c;最好的办法始终是把手打湿&#xff0c;整一个能够运行&#xff0c;可以实验的东西出来。 也只有在程序开发中&#xff0c;我们才能想一个魔法师而不是魔术师&#xff0c;我们真的能够创造一个东西。而且编…

Node.js:Express 服务 路由

Node.js&#xff1a;Express 服务 & 路由 创建服务处理请求req对象 静态资源托管托管多个资源挂载路径前缀 路由模块化 Express是Node.js上的一个第三方框架&#xff0c;可以快速开发一个web框架。本质是一个包&#xff0c;可以通过npm直接下载。 创建服务 Express创建一…

C语言 | Leetcode C语言题解之第530题二叉搜索树的最小绝对差

题目&#xff1a; 题解&#xff1a; void dfs(struct TreeNode* root, int* pre, int* ans) {if (root NULL) {return;}dfs(root->left, pre, ans);if (*pre -1) {*pre root->val;} else {*ans fmin(*ans, root->val - (*pre));*pre root->val;}dfs(root->…

重学SpringBoot3-整合 Elasticsearch 8.x (二)使用Repository

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 整合 Elasticsearch 8.x &#xff08;二&#xff09;使用Repository 1. 环境准备1.1 项目依赖1.2 Elasticsearch 配置 2. 使用Repository的基本步骤2.1 创建实体类2.2 创…

SpringBoot源码(四):run() 方法解析(一)

run()方法&#xff1a; public ConfigurableApplicationContext run(String... args) {// 记录应用启动时间long startTime System.nanoTime();DefaultBootstrapContext bootstrapContext createBootstrapContext();// 创建 ConfigurableApplicationContext 对象Configurabl…

ASP .NET CORE 6 在项目中集成WatchDog开源项目

概念 WatchDog是一个开源的项目&#xff0c;可以实现对.Net 应用程序和API实现实时应用日志和性能监控平台。可以实现实时记录和查看应用程序中的消息、事件、HTTP请求和响应&#xff0c;以及运行时捕获的异常&#xff0c;有效帮助开发人员去排查应用异常&#xff0c;提升开发效…

分类算法——决策树 详解

决策树的底层原理 决策树是一种常用的分类和回归算法&#xff0c;其基本原理是通过一系列的简单决策&#xff0c;将数据集划分为多个子集&#xff0c;从而实现分类。决策树的核心思想是通过树形结构表示决策过程&#xff0c;节点代表特征&#xff0c;边代表决策&#xff0c;叶子…

python 使用进程池并发执行 SQL 语句

这段代码使用了 Python 的 multiprocessing 模块来实现真正的并行处理&#xff0c;绕过 Python 的全局解释器锁&#xff08;GIL&#xff09;限制&#xff0c;从而在多核 CPU 上并发执行多个 SQL 语句。 from pyhive import hive import multiprocessing# 建立连接 conn hive.…

[ 问题解决篇 ] win11中本地组策略编辑器gpedit.msc打不开(gpedit.msc缺失)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

[Python学习日记-55] 软件开发目录设计规范

[Python学习日记-55] 软件开发目录设计规范 简介 为什么要设计好目录结构&#xff1f; 目录组织方式 关于 README 的内容 关于 setup.py 和 requirements.txt 关于配置文件的使用方法 简介 我们在浏览一些开源项目或者是一些安装后的软件的时候会发现&#xff0c;不同的两…

18.农产品销售系统(基于springboot和vue的Java项目)

目录 1.系统的受众说明 2.开发环境与技术 2.1 Java语言 2.2 MYSQL数据库 2.3 IDEA开发工具 2.4 Spring Boot框架 3.系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程 3.2.1 操作流程 3.2.2 登录流程 3.2.3 删除信…