7. Spring Boot 创建与使用

经过前面的六篇文章,Spring Framework的知识终于大致讲完了,但是Spring AOP还没提到,个人认为Spring AOP更适合放在Spring MVC之后再讲解,而讲解Spring MVC前先学习Spring Boot的目的也是为了在学习Spring MVC的时候直接使用Spring Boot来创建项目,从现在起我们就要进入Spring Boot的时代了。

1. 什么是Spring Boot?

Spring Boot是由Pivotal团队提供的全新框架,Spring Boot翻译过来其实就是Spring的脚手架,脚手架的作用自然就是为了更快速的盖房子。如果说Spring的诞生是为了降低Java程序的开发成本的,那么Spring Boot的诞生是为了简化Spring应用的初始搭建以及开发过程。

2. Spring Boot优点

以下优点可在后续慢慢体会:

  • 快速集成框架,Spring Boot 提供了启动添加依赖的功能,用于秒级集成各种框架;
  • 内置运行容器,无需配置 Tomcat 等 Web 容器,直接运行和部署程序;
  • 快速部署项目,无需外部容器即可启动并运行项目;
  • 可以完全抛弃繁琐的 XML,使用注解和配置的方式进行开发;
  • 支持更多的监控的指标,可以更好的了解项目的运行情况;

3. Spring Boot 创建项目

3.1在idea中选择Spring Initializer构建项目

Group对应组织id,Artifact对应项目id,Language选择Java,Type选择Maven,Packaging选择jar包,这里就不多说了。

在这里插入图片描述

3.2 选择合适的源

Spring Boot项目的工程模板是从远程pull下来的,因此要在创建之初选择合适的源,为了支持Java8,我这里选择使用阿里云的源(https://start.aliyun.com):点击小齿轮进行更改

image.png

3.3 选择版本号并且快速添加依赖

点击Next后就可以选择Spring Boot的版本号和添加常用依赖了,这里我选择Spring Boot 2.7.6版本,并且之后的项目也是一样。

在这里插入图片描述

0.开篇:SSM+Spring Boot导学中就提到了Spring Boot 提供了启动添加依赖的功能,用于秒级集成各种框架的优点,可以通过图形化界面在启动项目之初勾选添加项目需要的依赖

这里我引用了一些常用的依赖(除数据库相关):

  • Lombok:LomBok可以通过注解,帮助开发人员消除JAVA中尤其是POJO类中 的冗长代码。
  • Spring Web:提供Web框架,使项目具有处理HTTP请求的能力

image.png

选择完依赖后点击Create,Spring Boot的项目就成功创建好了。

创建好项目后点击springboot_demo包下的SpringBootDemoApplication类,发现该类上面有一个@SpringBootApplication的注解,这就表示该类为Spring Boot项目的启动类。

image.png

3.4 启动项目

编写一个Spring Web的路由方法进行测试:

//一个新的注解,后面会讲到
@RestController
public class TestController {
    //配置路由
    @RequestMapping("/sayHello")
    public String sayHello() {
        return "Hello my first Spring Boot!";
    }
}

点击三角形启动项目,并在Console中打印了Started SpringBootDemoApplication in 1.41 seconds (JVM running for 2.195)就代表这个项目已经正常跑起来

image.png

用浏览器通过路由访问:

image.png

3.5 jar包导入失败问题解决方案

jar包导入失败的主要原因是maven的默认拉取jar包的源是国外的源,下载速度极慢,这里我们需要配置maven的国内源:

1) 关闭项目

在这里插入图片描述

2) 点击Customize修改设置

在这里插入图片描述

3) 配置所有项目的设置

在这里插入图片描述

4)使用本地的setting.xml和repository缓存仓库

两个文件位于本地maven的对应路径,路径中一定不要出现中文!覆盖setting.xml是为了下一步引入国内镜像源,覆盖repository是为了之后缓存已下载的jar包,后续构建项目可省去下载步骤

image.png

5)配置好点击Apply+OK

这样设置完之后的项目的properties文件就都是以utf-8来编码的了,当前项目的话还需自己手动打开当前项目的设置,其他步骤和前面一样:

image.png

6)设置国内镜像源

打开settings.xml文件(推荐使用VSCode)

image.png

<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

修改完保存即可。

7)打开并重新加载Maven项目

image.png

4. Spring Boot项目目录结构

先把不用的文件给删掉:

image.png

大体分为三个部分:源代码目录、资源目录和测试目录
image.png

源代码目录:

标蓝的文件夹就是编写存放java源代码的目录,只有在这个目录下右键才能新建.java文件,这里不多讲了。

资源目录:

static目录:一般用于存放项目的前端静态文件如:html/css/js/jpg等等。

application.properties:Spring Boot项目的配置文件,里面都是键值对形式的语句,如通过server.port=8080可以设置web项目的端口号。

测试目录:

该目录的结构和源代码目录的结构一致(增加可读性),用于编写对应类的测试代码,之后会讲到。

pom.xml文件:

由于该Spring Boot项目还是基于Maven的,因此还是需要pom.xml文件,有些通过图形化界面无法引入的依赖还是得通过该文件引入依赖坐标。

5. 【小结】约定大于配置

SpringBoot 核心的设计思想:约定大于配置

把TestController类从controller的包移动到chenshu的包下:

image.png

再次访问路由发现错误信息:

image.png

TestController类已经通过@RestController注解修饰了,但为什么报了404错误呢?原因是Spring Boot只会扫描启动类的同一级目录或者子目录下的Bean,想想曾经的Spring项目,是不是还要通过一个.xml配置文件,然后添加一个扫描路径,而Spring Boot的做法是直接舍弃了这个配置,用约定来约束。

SpringBoot的其他默认约定有:

  1. Maven的目录结构:默认有src-main-resources文件夹,存放资源配置文件。src-main-java存放源文件,默认的编译生成的类都在targe文件夹下面;

  2. spring boot默认的配置文件只能是application.命名的yml文件或者properties文件,且唯一;

  3. application.properties中的默认键名称,如数据库连接信息必须是以spring.datasource为值;

  4. 当我们导入spring-boot-starter-web后,就会自动帮我们导入springMVC的相关依赖和一个内置的tomcat容器,以及spring-boot-starter-logging依赖。这使得在开发阶段可以直接通过 main 方法或是 JAR 包独立运行一个 WEB 项目。

  5. SpringBoot 约定以 starter 的形式减少依赖,于是相继推出了不少常用的 starter。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EelasticSearch使用

1. Easy-ES介绍 Easy-Es 2. 导入依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions>//排除框架中原有的依赖包<exclusion><groupId>org.elast…

Vue3 + Js + Element-Plus + VueX后台管理系统通用解决方案

前言 本文是作为学习总结而写的一篇文章&#xff0c;也是方便以后有相关需求&#xff0c;可以直接拿来用&#xff0c;也算是记录吧&#xff0c;文中有一些文件的引入&#xff0c;没给出来&#xff0c;完整项目地址&#xff08;后续代码仓库放这里&#xff09; 1、layout解决方…

kaggle 纽约预测出租车价格 得分 5.34072

流程 导入所要使用的包引入kaggle的数据集csv文件查看数据集有无空值填充这些空值提取特征分离训练集和测试集调用模型 数据资源获取 数据资源获取 导入需要的包 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns引入kaggl…

基于CH32V103的多功能推杆设计

一、项目简介 “创意源于生活&#xff0c;工具始于懒惰。” 整体造型外观参考了最近比较火的夫妻游戏《双人成行》第一关里面那个吸尘器的推杆开关&#xff0c;结构中采用阻尼器/滚珠轴承等器件&#xff0c;使其非常具有质感和手感。功能上我构思不能只有电脑开关这么简单地一…

高架学习笔记之软件架构风格

目录 零、什么是软件架构风格 一、常见的软件架构风格 二、数据流风格 2.1. 批处理风格 2.2. 管道-过滤器风格 三、调用/返回风格 3.1. 主/子程序风格 3.2. 面向对象风格 3.3. 层次型风格 3.4. 客户端/服务器风格 3.4.1. 两层C/S体系结构 3.4.2. 三层C/S体系结构 …

Redis报错:CROSSSLOT Keys in request don‘t hash to the same slot的解决方案

最近&#xff0c;项目上线的时候&#xff0c;出现了一个Redis的报错&#xff1a;CROSSSLOT Keys in request dont hash to the same slot&#xff0c;这个在内网环境下无法复现&#xff0c;因为正式环境的Redis是cluster集群模式&#xff0c;而我们内网环境是单机模式。(后面我…

k8s安装,linux-ubuntu上面kubernetes详细安装过程

官方文档&#xff1a;https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/ 环境配置 该部分每个主机都要执行 如果你确定不需要某个特定设置&#xff0c;则可以跳过它。 设置root登录 sudo passwd root sudo vim /etc/ssh/sshd_config Perm…

深入OceanBase内部机制:资源隔离实现的方式总结

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 目录 1. 为何HTAP需要资源隔离2. OceanBase的资源隔离机制概述租户间资源隔离租户内资源隔离物理资源隔离大查询请求的隔离优先级…

排序 “贰” 之选择排序

目录 ​编辑 1. 选择排序基本思想 2. 直接选择排序 2.1 实现步骤 2.2 代码示例 2.3 直接选择排序的特性总结 3. 堆排序 3.1 实现步骤 3.2 代码示例 3.3 堆排序的特性总结 1. 选择排序基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个…

【剪映专业版】13快速为视频配好音:清晰、无噪声、对齐

视频课程&#xff1a;B站有知公开课【剪映电脑版教程】 使用场景&#xff1a;视频无声音或者视频有声音但是需要更改声音 时间指示器在哪里&#xff0c;就从哪里开始 红色按钮&#xff1a;开始录音 声音波纹&#xff1a;蓝色最佳&#xff0c;黄色或红色声音太大&#xff0c;…

网络原理-UDP和TCP

在传输层中有两个非常重要的协议&#xff0c;UDP和TCP&#xff0c;现在就来研究一下这两个协议。 UDP 报文格式 我们观察可以发现&#xff0c;里面UDP报文长度为2个字节&#xff0c;那么是多少呢&#xff1f;我们需要快速反应如下固定字节数据类型的取值范围&#xff1a; 字…

open Gauss 数据库-06 openGauss数据库安全指导手册5.0.0

发文章是为了证明自己真的掌握了一个知识&#xff0c;同时给他人带来帮助&#xff0c;如有问题&#xff0c;欢迎指正&#xff0c;祝大家万事胜意&#xff01; 目录 前言 openGauss数据库安全指导 1 用户权限控制 1.1 实验介绍 1.1.1 关于本实验 1.1.2 实验目的 1.2 用户…

ACE框架学习2

目录 ACE Service Configurator框架 ACE_Server_Object类 ACE_Server_Repository类 ACE_Server_Config类 ACE Task框架 ACE_Message_Queue类 ACE_TASK类 在开始之前&#xff0c;首先介绍一下模板类的实例化和使用。给出以下代码 //ACCEPTOR代表模板的方法 template <…

CAS Client使用以及执行原理

CAS Client使用以及执行原理 流程介绍 CAS Client是利用Java Web中的Filter进行实现认证功能&#xff0c;客户端对CAS Server的认证流程分为以下步骤&#xff1a; 访问CAS Client服务 由于当前session中未检测到认证信息&#xff0c;会重定向到CAS Server地址进行认证 在CA…

【深度学习】Dropout、DropPath

一、Dropout 1. 概念 Dropout 在训练阶段会让当前层每个神经元以drop_prob&#xff08; 0 ≤ drop_prob ≤ 1 0\leq\text{drop\_prob}\leq1 0≤drop_prob≤1&#xff09;的概率失活并停止工作&#xff0c;效果如下图。 在测试阶段不会进行Dropout。由于不同批次、不同样本的神…

IMUGNSS的误差状态卡尔曼滤波器(ESKF)---更新过程

IMU&GNSS的误差状态卡尔曼滤波器&#xff08;ESKF&#xff09;---更新过程 ESKF的更新过程 ESKF的更新过程 前面介绍的是ESKF的运动过程&#xff0c;现在考虑更新过程。假设一个抽象的传感器能够对状态变量产生观测&#xff0c;其观测方程为抽象的h,那么可以写为 其中z为…

创新指南|节日期间提高销量的 10 个最佳技巧

许多网上购物者在感恩节前开始假日购物。假期是在线企业销售产品和增加销售额的最佳时机。根据万事达卡的数据&#xff0c;去年在线假日销售额增长了 10.6%&#xff0c;而店内销售额增长了 6.8%。此外&#xff0c;2023年美国消费者平均计划在假日旺季花费约1,530美元。在线企业…

存储过程的查询

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 在实际使用中&#xff0c;经常会需要查询数据库中已有的存储过程或者某一个存储过程的内容&#xff0c; 下面就介绍-下如何查询存储过程。 这需要使用到数据字典 user_sou…

vscode 配置verilog环境

一、常用的设置 1、语言设置 安装如下插件&#xff0c;然后在config 2、编码格式设置 解决中文注释乱码问题。vivado 默认是这个格式&#xff0c;这里也设置一样。 ctrl shift p 打开设置项 3、插件信任区设 打开一个verilog 文件&#xff0c;显示是纯本文&#xff0c;没…

B树和B+树试题解析

一、单项选择题 01&#xff0e;下图所示是一棵&#xff08;A ). A.4阶B树 B.3阶B树 C.4阶B树 D.无法确定 02.下列关于m阶B树的说法中&#xff0c;错误的是( C ). A.根结点至多有m棵子树 B.所有叶结点都在同一层次上 C.非叶结点至…