Spring Boot介绍、入门案例、环境准备、POM文件解读

文章目录

    • 1.Spring Boot(脚手架)
    • 2.微服务
    • 3.环境准备
      • 3.1创建SpringBoot项目
      • 3.2导入SpringBoot相关依赖
      • 3.3编写一个主程序;启动Spring Boot应用
      • 3.4编写相关的Controller、Service
      • 3.5运行主程序测试
      • 3.6简化部署
    • 4.Hello World探究
      • 4.1POM文件
        • 4.1.1父项目
        • 4.1.2父项目的父项目
        • 4.1.3启动器


1.Spring Boot(脚手架)

Spring Boot是简化Spring应用开发的一个框架,整个Spring技术栈的一个大整合,J2EE开发的一站式解决方案

Spring Boot的优点:

  • 快速创建独立运行的spring项目以及与主流框架集成
  • 使用嵌入式的Servlet容器,应用无需打成war包,内嵌Tomcat
  • Starters自动依赖和版本控制
  • 大量的自动装配,简化开发,也可以修改默认值
  • 无需配置XML无代码生成开箱即用
  • 准生产环境的运行时应用监控
  • 与云计算的天然集成

2.微服务

Spring Cloud微服务治理方案

​ 2014年,Martin Fowler 和 James Lewis 发表了一篇重要的文章:《Microservices - a definition of this new architectural term》。在这篇文章中,他们提出了微服务架构的基本概念。

从传统的单体应用到微服务架构,经历了以下演变:

  1. 单体架构(Servlet/SSM):最早的架构模式,适用于简单应用。
  2. SOA:拆分服务以提高重用性和灵活性,但存在集成和性能的挑战。
  3. 微服务(Spring Cloud):将服务进一步细化,追求每个服务的自治性和独立性,解决了 SOA 中的复杂性问题。

微服务:架构风格(服务微化)

  • 微服务是指开发单个小型的但有业务功能的服务,每个服务都有自己处理和轻量通讯机制,可以部署在单个或多个服务器上。微服务也指一种种松耦合的有一定的有界上下文的面向服务架构。
  • 一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;
  • 单体应用:ALL IN ONE
  • 微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元;

微服务文档https://martinfowler.com/articles/microservices.html#MicroservicesAndSoa

微服务优点:

  • 每一个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。
  • 微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。
  • 微服务是松耦合的,是有功能意义的服务,无论是开发阶段或是部署阶段都是独立的。
  • 微服务能够使用不同的语言开发。
  • 微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,一个团队的新成员能够更快投入生产。
  • 微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果,
  • 微服务能够即时被要求扩展。
  • 微服务能够部署中低端配置的服务。
  • 易于和第三方集成。
  • 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库。

微服务缺点:

  • 微服务架构可能带来过多的操作
  • 可能双倍的努力
  • 分布式系统可能复杂难以管理
  • 因为分布部署跟踪问题难
  • 当服务量增加,管理复杂性增加

3.环境准备

环境约束

jdk 1.8,maven 4.5.6,IDEA2017,SpringBoot 2.5.6

3.1创建SpringBoot项目

省略,可以查看SpringBoot项目的创建方式-CSDN博客

3.2导入SpringBoot相关依赖

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.6</version><relativePath/> </parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies>

3.3编写一个主程序;启动Spring Boot应用

注意要将主程序放入三级根目录下

image-20241227135619248

/**
* @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
*/
@SpringBootApplication
public class SpringBoot01Application {public static void main(String[] args) {// Spring应用启动起来SpringApplication.run(SpringBoot01Application.class,args);}
}

3.4编写相关的Controller、Service

@Controller
public class HelloController {@ResponseBody@RequestMapping("/hello")public String hello(){return "Hello World!";}
}

3.5运行主程序测试

image-20241227135744762

image-20241227135904445

使用浏览器访问,8080为未设置的默认端口号

image-20241227135951594

不需要如SSM项目配置Tomcat就可以访问网页,因为SpringBoot中内嵌了Tomcat,会根据导入SpringBoot的版本自动匹配Tomcat版本

image-20241227140232816

3.6简化部署

在pom.xml添加下面这个插件

<!‐‐ 这个插件,可以将应用打包成一个可执行的jar包;‐‐>
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

将这个项目进行打包

image-20241227140440294

java -jar 包名

image-20241227141150419

当命令窗口关闭后,则不能访问

4.Hello World探究

4.1POM文件

4.1.1父项目
	<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.6</version><relativePath/> <!-- lookup parent from repository --></parent>

作用spring-boot-starter-parent 是 Spring Boot 官方提供的一个父级 POM(项目对象模型)文件,它是一个专为 Spring Boot 项目定制的父 POM。它为你的 Spring Boot 项目提供了一些默认的配置,包括插件版本、依赖项管理和一些常见的构建配置。

功能

  • 继承此父 POM,Maven 会自动为项目配置很多常见的插件和默认依赖项。
  • 提供合理的默认配置,简化项目设置,开发者无需单独配置构建插件(如 maven-compiler-pluginmaven-spring-boot-plugin 等)。
  • 集成 Spring Boot 所需的特定插件和依赖项,使构建和打包过程更加顺畅。
  • relativePath 是空的,意味着从 Maven 仓库中查找父 POM,而不是相对路径(用于特殊情况)。
4.1.2父项目的父项目

他来真正管理Spring Boot应用里面的所有依赖版本;是Spring Boot的版本仲裁中心;

以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.5.6</version></parent>

作用spring-boot-dependencies 是 Spring Boot 的依赖管理 BOM(Bill Of Materials)文件。它用于统一管理所有 Spring Boot 项目的依赖版本,确保依赖库的版本兼容性。它并不直接提供插件或构建配置,而是为项目提供了一个集中式的依赖管理。

功能

  • 通过引入 spring-boot-dependencies,你无需手动指定 Spring Boot 项目所需的依赖版本号,父 POM 会自动为你管理这些版本。
  • 它帮助统一管理 Spring 相关库的版本,避免了版本冲突或不兼容的情况。
  • 它并不会直接引入所有的依赖,而是提供一个依赖版本的推荐集合,可以通过 <dependencyManagement> 来进行声明,从而控制项目中的依赖版本。
4.1.3启动器
		<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

spring-boot-starter-web

spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件;

Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter

相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器

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

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

相关文章

嵌入式入门Day35

网络编程 Day2 套接字socket基于TCP通信的流程服务器端客户端TCP通信API 基于UDP通信的流程服务器端客户端 作业 套接字socket socket套接字本质是一个特殊的文件&#xff0c;在原始的Linux中&#xff0c;它和管道&#xff0c;消息队列&#xff0c;共享内存&#xff0c;信号等…

安卓系统主板_迷你安卓主板定制开发_联发科MTK安卓主板方案

安卓主板搭载联发科MT8766处理器&#xff0c;采用了四核Cortex-A53架构&#xff0c;高效能和低功耗设计。其在4G网络待机时的电流消耗仅为10-15mA/h&#xff0c;支持高达2.0GHz的主频。主板内置IMG GE832 GPU&#xff0c;运行Android 9.0系统&#xff0c;内存配置选项丰富&…

centos,789使用mamba快速安装R及语言包devtools

如何进入R语言运行环境请参考&#xff1a;Centos7_miniconda_devtools安装_R语言入门之R包的安装_r语言devtools包怎么安装-CSDN博客 在R里面使用安装devtools经常遇到依赖问题&#xff0c;排除过程过于费时&#xff0c;使用conda安装包等待时间长等。下面演示centos,789都是一…

人工智能(AI)简史:推动新时代的科技力量

一、人工智能简介 人工智能&#xff08;AI&#xff0c;Artificial Intelligence&#xff09;是计算机科学的一个分支&#xff0c;旨在研究和开发可以模拟、扩展或增强人类智能的系统。它涉及多种技术和方法&#xff0c;包括机器学习、深度学习、自然语言处理&#xff08;NLP&a…

【笔记】在虚拟机中通过apache2给一个主机上配置多个web服务器

&#xff08;配置出来的web服务器又叫虚拟主机……&#xff09; 下载apache2 sudo apt update sudo apt install apache2 &#xff08;一&#xff09;ip相同 web端口不同的web服务器 进入 /var/www/html 创建站点一和站点二的目录文件&#xff08;目录文件名自定义哈&#x…

linux装git

前言 以 deepin 深度系统为例&#xff0c;安装命 令行版 Git 非常简单。 安装 注意&#xff1a;需要输入账号密码&#xff0c;否则无法进行。 打开终端&#xff0c;执行如下命令即可。 sudo apt-get install git成功 如下图所示&#xff0c;输入 git &#xff0c;命令识别即…

【Spark】架构与核心组件:大数据时代的必备技能(下)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《大数据前沿&#xff1a;技术与应用并进》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是Apache Spark 2、Spark 的应用场景&…

NLP中的神经网络基础

一&#xff1a;多层感知器模型 1&#xff1a;感知器 解释一下&#xff0c;为什么写成 wxb>0 &#xff0c;其实原本是 wx > t ,t就是阈值&#xff0c;超过这个阈值fx就为1&#xff0c;现在把t放在左边。 在感知器里面涉及到两个问题&#xff1a; 第一个&#xff0c;特征提…

第十一章 图论

题目描述&#xff1a; 阿里这学期修了计算机组织和架构课程。他了解到指令之间可能存在依赖关系&#xff0c;比如WAR&#xff08;读后写&#xff09;、WAW、RAW。 如果两个指令之间的距离小于安全距离&#xff0c;则会导致危险&#xff0c;从而可能导致错误的结果。因此&#…

嵌入式系统 第七讲 ARM-Linux内核

• 7.1 ARM-Linux内核简介 • 内核&#xff1a;是一个操作系统的核心。是基于硬件的第一层软件扩充&#xff0c; 提供操作系统的最基本的功能&#xff0c;是操作系统工作的基础&#xff0c;它负责管理系统的进程、内存、设备驱动程序、文件和网络系统&#xff0c; 决定着系统的…

win11蓝屏死机 TPM-WMI

1. 打开win11的事件查看器&#xff0c;定位错误 最近两次都是 KB5016061&#xff1a;安全启动数据库和 DBX 变量更新事件 - Microsoft 支持 事件源 TPM-WMI 事件 ID 1796 2. 解决方案 打开注册表&#xff1a;计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro…

Linux命令——3.网络与用户

文章目录 一、网络1.网络测试与诊断2.网络接口配置3.无线网络配置4.防火墙与网络管理6.防火墙管理1&#xff09;firewalld命令2&#xff09;iptables命令 二、用户和群组1.管理员模式2.用户账户管理1&#xff09;useradd创建2&#xff09;usermod修改3&#xff09;userdel 删除…

机器学习算法基础知识1:决策树

机器学习算法基础知识1&#xff1a;决策树 一、本文内容与前置知识点1. 本文内容2. 前置知识点 二、场景描述三、决策树的训练1. 决策树训练方式&#xff08;1&#xff09;分类原则-Gini&#xff08;2&#xff09;分类原则-entropy&#xff08;3&#xff09;加权系数-样本量&am…

_使用CLion的Vcpkg安装SDL2,添加至CMakelists时报错,编译报错

语言&#xff1a;C20 编译器&#xff1a;gcc 14.2 摘要&#xff1a;初次使用Vcpkg添加SDL2&#xff0c;出现CMakelists找不到错误、编译缺失main错误、运行失败错误。 CMakelists缺失错误&#xff1a; 使用CLion的Vcpkg安装SDL2时&#xff0c;按照指示把对应代码添加至CMakel…

Lumos学习王佩丰Excel第二十二讲:制作甘特图与动态甘特图

一、制作双向条形图 1. 分离坐标轴 2. 自定义坐标轴数字格式&#xff1a;加分号加正常数字 3. 修改图表背景 修改图片艺术效果&#xff1a;虚化图片 二、制作甘特图 1、甘特图定义 甘特图&#xff08;Gantt chart&#xff09;又称为横道图、条状图&#xff08;Bar chart&…

el-pagination 为什么只能展示 10 条数据(element-ui@2.15.13)

好的&#xff0c;我来帮你分析前端为什么只能展示 10 条数据&#xff0c;以及如何解决这个问题。 问题分析&#xff1a; pageSize 的值&#xff1a; 你的 el-pagination 组件中&#xff0c;pageSize 的值被设置为 10&#xff1a;<el-pagination:current-page"current…

【网络安全实验室】SQL注入实战详情

如果额头终将刻上皱纹&#xff0c;你只能做到&#xff0c;不让皱纹刻在你的心上 1.最简单的SQL注入 查看源代码&#xff0c;登录名为admin 最简单的SQL注入&#xff0c;登录名写入一个常规的注入语句&#xff1a; 密码随便填&#xff0c;验证码填正确的&#xff0c;点击登录…

ruoyi 多租户 开启后针对某一条sql不适用多租户; 若依多租户sql规则修改

文章参考&#xff1a;多租户功能 | Ruoyi-TDesign 忽略租户​ 1.如果需要指定单独 SQL 不开启过滤&#xff0c;可在对应的 Mapper 接口添加如下忽略注解&#xff1a; InterceptorIgnore(tenantLine "true", dataPermission "false") 此处注意事项 使…

一文理解条件竞争漏洞

视频教程在我主页简介或专栏里 目录&#xff1a; 理解竞争条件的基本概念 限制超越型竞争条件 使用 Burp Repeater 检测和利用限制超限竞态条件 方法论 1 — 预测潜在的冲突 2 — 线索 3 — 概念验证 如何防止竞态条件漏洞 理解竞争条件的基本概念 竞争条件(也就是条件竞…

一种基于动态部分重构的FPGA自修复控制器

1.FPGA动态部分重构技术 动态部分重构技术指在FPGA运行时&#xff0c;通过加载部分位流文件来修改FPGA可重构区域中的逻辑设计&#xff0c;修改过程中其余逻辑功能不受影响整个系统也能够持续运行。 下图为FPGA动态部分重构的基本原理图。通过下载A1.bit、A2.bit、A3.bit 或A4.…