【Spring框架全系列】SpringBoot_基础_先知(详细)

news2024/11/25 15:56:21

文章目录

    • 1.SpringBoot介绍
    • 2.创建一个SpringBoot项目
    • 3.parent标签 - 父工程
    • 4.starter依赖
    • 5.启动类和文件打包
    • 6.默认配置

1.SpringBoot介绍

Spring阶段最困扰大家的事情是什么? 配置 → 配置魔鬼

快速搭建一个独立的生产级别的Spring应用
快速引入项目相关依赖
开箱即用,约定大于配置,大多数应用只需要极少的Spring配置
内置JavaEE容器,可以以Jar包的方式启动

2.创建一个SpringBoot项目

  • 官网

start.spring.io选择groupId、ArtifactId、版本号、扫描包、JDK版本、项目构建方式、开发语言、引入的其他依赖来创建SpringBoot应用,点击Generate会下载一个zip压缩包,解压开就是一个SpringBoot应用,同时也是一个Maven工程

在这里插入图片描述

解压后会包含这样的文件,包含src目录、pom.xml文件、帮助文档、Git忽略管理配置文件、Maven相关文件

在这里插入图片描述

  • IDEA

其实需要的配置项和在官网上创建是完全一致的,只不过选择是在IDEA中选择,另外可以选择Project和Module的路径。

新建一个新的Project,其中starter service URL就是Spring官网创建SpringBoot应用的链接

在这里插入图片描述

选择依赖和SpringBoot应用的版本

在这里插入图片描述

创建好了
在这里插入图片描述

查看pomxml文件,我们发现刚才选择的SQL和Mvc的依赖帮我们配置好了

在这里插入图片描述

3.parent标签 - 父工程

所有的SpringBoot应用都有这样的一个父工程,parent标签里有一个version标签,SpringBoot应用的版本号;修改version标签里的值就是修改使用的使用SpringBoot版本
在这里插入图片描述

使用父工程的话,可以共享父工程里的配置 → 相同配置的解耦

父工程打包方式是pom,可以在本地仓库里找到这个文件

父工程中的标签

  • dependencies → 子工程里会引用父工程里依赖,SpringBoot应用中其实没有用到这个标签

  • dependencyManagement → 写的dependency标签的写法和我们前面的写法是一致的 → 提供的是依赖的版本信息,如果父工程中写了一个依赖,而子工程中也写了相同的依赖(groupid和artifactId一致)

  •   如果子工程中的依赖没有写版本号,复用父工程中的版本号
    
  •   如果子工程中的依赖写了版本号,使用自定义的这个版本号
    

和我们之前写的dependency标签不一样的点 → 没有写版本号

但实际上有版本信息 → 父工程(的父工程)中的dependencyManagement中的来

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

当前SpringBoot有一个爷爷工程,这个爷爷工程就是专门管理依赖的版本信息的

<dependencyManagement>
  <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.7.7</version>
      </dependency>
    </dependencies>
</dependencyManagement>

在这里插入图片描述

答案:5.1.47,而不是8.0.31, boot默认给我们一个它规定的版本,只要我们手动写,那么boot就会使用我们手动配置的。

(注意!!!)实际开发

  • 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供
  • 如发生坐标错误,再指定version(要小心版本冲突)

4.starter依赖

引入的依赖中,artifactid中有一个starter这样的一个词,这样的依赖就叫其starter依赖

  • spring-boot-starter SpringBoot本身的依赖,所有的SpringBoot应用都有这个依赖

  • spring-boot-starter-xxx SpringBoot官方提供的依赖(groupid → org.springframework.boot),提供的是 SpringBoot对xxx技术的支持

      - 比如spring-boot-starter-web 就是SpringBoot对web技术的支持
     
     - 比如spring-boot-starter-tomcat就是SpringBoot对Tomcat的支持
     
     - 比如spring-boot-starter-json 就是SpringBoot对Json的支持
    
  • xxx-spring-boot-starter 第三方框架提供的依赖,提供的是SpringBoot对xxx技术的支持

     -  比如mybatis-spring-boot-starter,SpringBoot对MyBatis技术的支持
    
     - 比如pagehelper-spring-boot-starter
    

通常在SpringBoot中要使用某一项技术,只需要引入其starter依赖就可以了

为什么引入其starter依赖就可以了?

  • starter依赖中关联了其他依赖,当我们引入starter依赖的时候,会将该技术所需要的其他的依赖一同引入进来

     -	 举个例子:使用mybatis的话,引入mybatis-spring-boot-starter,mybatis、mybatis-spring、spring-jdbc都会被引入进来
    
  • starter依赖中通常会包含另外一个依赖autoconfigure依赖

     - autoconfigure依赖能够帮我们做自动配置,自动配置里最主要的是自动注册默认的组件
    

5.启动类和文件打包

SpringBoot应用最终打包为Jar包,packaging的默认值也是jar

① 对SpringBoot项目打包(执行Maven构建指令package)

② 执行启动指令

java -jar springboot_01_quickstart.jar # 项目的名称根据实际情况修改

注意事项:

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

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

启动类:main方法所处的类 → 启动类的包目录就是SpringBoot应用默认的扫描包目录也相当于了我们的SpringConfig配置文件中的包扫描
在这里插入图片描述

6.默认配置

tomcat默认配置了端口号为8080
在这里插入图片描述

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

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

相关文章

开源!过程控制与自动化系统

软件介绍 ProviewR是一个基于GPL许可的过程控制与自动化系统&#xff0c;最初由瑞典的Mandator和SSAB Oxelsund开发。作为一个成熟、集成且低成本的自动化解决方案&#xff0c;ProviewR在以Linux作为操作系统的标准PC上运行。该系统包含了顺序控制、调整、数据采集、通信、监控…

16、matlab求导、求偏导、求定积分、不定积分、数值积分和数值二重积分

1、matlab求导&#xff0c;diff()函数 1&#xff09;一阶导数 语法&#xff1a;diff(f(x)):求一阶导数 //diff(f(x),n):求n阶导数(n为具体正整数) 以函数&#xff08;cos(x)sin(x)-x^2&#xff09;的一阶导数为例 一阶导数代码&#xff1a; yms x;%声明符号变量x f(x)cos(…

开源网关Apache APISIX启用JWT身份验证

说明&#xff1a; 本文APISIX的配置参考我之前写的《Ubuntu部署Apache APISIX》 创建最小API 首先&#xff0c;确保你已经安装了.NET 6 SDK。创建文件夹“MinimalApiDemo”&#xff0c;VS Code打开文件夹&#xff0c;打开终端 dotnet new web -o MinimalApiDemo cd Minimal…

ros2笔记

Ros2 hello world ccreate packagehelloworld.cpp hello world pythonhelloworld.py file explainros2 cmdcreatebuildfindruninstall interfacesmsg filesrv fileaction file Topic hello world c mkdir -p {your workspace name}/src cd {your workspace name} #进入工作空间…

【CTF-Web】文件上传漏洞学习笔记(ctfshow题目)

文件上传 文章目录 文件上传What is Upload-File&#xff1f;Upload-File In CTFWeb151考点&#xff1a;前端校验解题&#xff1a; Web152考点&#xff1a;后端校验要严密解题&#xff1a; Web153考点&#xff1a;后端校验 配置文件介绍解题&#xff1a; Web154考点&#xff1a…

【Java】static 修饰成员方法

static 修饰成员方法 简介 应用 static 修饰成员方法 1.static 修饰成员方法2.内存原理3.main函数4.类方法的应用 1.static 修饰成员方法 测试类&#xff1a; package suziguang_d2_staticdemo;public class Test {public static void main(String[] args) {// 1.类方法使用/…

六西格玛培训,带你解锁职场超能力工具!

当提及六西格玛培训的精髓时&#xff0c;我们不得不提到那些强大而实用的工具&#xff0c;它们如同探险者的指南针&#xff0c;引导我们走向卓越。今天&#xff0c;就让我们一起揭开这些神秘工具的面纱&#xff0c;探寻六西格玛背后的智慧。 首先&#xff0c;DMAIC流程是六西格…

SpringBoot高手之路04-Aop

文章目录 AOP 基础AOP概述start依赖,开发某一个功能,只需要下载这一个依赖,关于他的依赖都会下载下来 AOP快速入门AOP核心概念 切入点表达式-execution AOP 基础 AOP概述 AOP 对特定的方法做增强 AOP 快速入门 start依赖,开发某一个功能,只需要下载这一个依赖,关于他的依赖…

LNMP网站架构部署

目录 一、LNMP架构部署&#xff08;源码编译安装&#xff09; ①实验准备 ②安装nginx服务 ③安装mysql服务&#xff0c;配置文件 ④安装php服务&#xff0c;修改配置文件 ⑤验证 静态页面测试访问 动态页面测试访问 调用数据库测试 二、LNMP架构应用实例 1.论坛网站…

网鼎杯 2020 玄武组 SSRFMe

复习一下常见的redis主从复制 主要是redis伪服务器的选择和一些小坑点 <?php function check_inner_ip($url) { $match_resultpreg_match(/^(http|https|gopher|dict)?:\/\/.*(\/)?.*$/,$url); if (!$match_result) { die(url fomat error); } try { …

安卓照片云备份:如何将Android照片备份到云服务

随着智能手机摄影技术的发展&#xff0c;我们每天都在手机上拍摄大量照片和视频。为了防止宝贵的回忆丢失&#xff0c;将这些照片备份到云服务上是一个明智的选择。我们有多种云服务可供选择&#xff0c;如华为云、小米云、腾讯云等&#xff0c;它们提供了安全、便捷的数据备份…

力扣2968.执行操作使频率分数最大

力扣2968.执行操作使频率分数最大 方法一&#xff1a;滑窗 前缀和 求前缀和数组s 求一个数组补齐到中位数的差值 枚举右端点 class Solution {public:int maxFrequencyScore(vector<int>& nums, long long k) {int res0,n nums.size();sort(nums.begin(),nums…

tomcat中管理环境变量之setenv.sh

tomcat配置spring profiles springboot打包war部署到外部tomcat的时候指定profile启动 windows 在%tomcat%/bin下创建setenv.bat文件 linux 在%tomcat%/bin下创建setenv.sh文件 使用JVM参数: windows set "JAVA_OPTS%JAVA_OPTS% -Dspring.profiles.activedev"in…

【ROS2大白话】三、给turtlebot3安装realsense深度相机

系列文章目录 【ROS2大白话】一、ROS2 humble及cartorgrapher安装 【ROS2大白话】二、turtlebot3安装 【ROS2大白话】三、给turtlebot3安装realsense深度相机 【ROS2大白话】四、ROS2非常简单的传参方式 文章目录 系列文章目录效果展示一、修改model.sdf文件1. 路径位置2. 修改…

基于python的网上挂号预约系统-计算机毕业设计源码35796

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;医院当然也不例外。网上挂号预约系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;采用Py…

数据结构:详解二叉树(树,二叉树顺序结构,堆的实现与应用,二叉树链式结构,链式二叉树的4种遍历方式)

目录 1.树的概念和结构 1.1树的概念 1.2树的相关概念 1.3树的代码表示 2.二叉树的概念及结构 2.1二叉树的概念 2.2特殊的二叉树 2.3二叉树的存储结构 2.3.1顺序存储 2.3.2链式存储 3.二叉树的顺序结构和实现 3.1二叉树的顺序结构 3.2堆的概念和结构 3.3堆的特点 3…

Linux 35.5 + JetPack v5.1.3@ego-planner-swarm编译安装

Linux 35.5 JetPack v5.1.3ego-planner-swarm编译安装 1. 源由2. 编译&安装Step 1&#xff1a;依赖库安装Step 2&#xff1a;建立工程Step 3&#xff1a;编译工程Step 4&#xff1a;安装工程 3. 问题汇总3.1 组件ros-noetic-roslint问题3.2 uav_simulator/local_sensing -…

Win32和c++11多线程

Win32和c11多线程 一、概念1.线程的特点线程内核对象线程控制块线程是独立调度和分派的基本单位共享进程的资源 2.线程的上下文切换引起上下文切换的原因 3.线程的状态 二、Windows多线程API1.CreateThread创建线程2.获取线程ID3.关闭线程句柄4.挂起线程5.恢复线程6.休眠线程的…

GAT1399协议分析(二)--注册流程分析

一、官方流程说明 二、官方流程解析 1 : 发起方向接收方发送注册 HTTP POST 请求/VIID/System/Register。 2: 接收方向发送方发送响应401 Unauthorized, 并在响应的消息头 WWW-Authenticate 字段中给 出适合发送方的认证机制和参数。 3: 发起方重新向接收方发送注册 HTTP POST…

谷歌创新框架:从非结构化数据,实现多模态学习

看、听、说的多模态已成为主流大模型的重要功能之一。但在数据爆炸时代&#xff0c;大模型学习文本类的结构化数据相对还好一些&#xff0c;但要去学习视频、音频、图片等非结构化数据非常困难。 目前&#xff0c;从结构化和非结构化数据实现多模态学习&#xff0c;会随着模态…