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。

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

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

相关文章

项目管理软件评测:选择合适软件是关键

在过去&#xff0c;中小企业项目管理沿用的是office全家桶&#xff0c;用到后面项目由简单变复杂&#xff0c;项目资源越来越庞大&#xff0c;项目成员越来越多&#xff0c;项目管理问题日益凸显。好用的项目管理软件是化解问题的好方法&#xff0c;好用的项目管理软件是什么样…

C语言中的编译和链接

系列文章目录 文章目录 ​编辑 系列文章目录 文章目录 前言 一、 翻译环境和运行环境 二、 翻译环境 2.1 编译 2.1.1 预处理 2.1.2 编译 2.1.2.1 词法分析 : 2.1.2.2 语法分析 2.1.2.3 语义分析 2.1.3 汇编 2.2 链接 三、运行环境 前言 在我们平常的写代码时&#xff0c;我们很…

基于SpringBoot+Vue的健身器材用品网站(源码+文档+部署+讲解)

一.系统概述 随着我国经济的高速发展与人们生活水平的日益提高&#xff0c;人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下&#xff0c;人们更趋向于足不出户解决各种问题&#xff0c;必录德健身器材用品网展现了其蓬勃生命力和广阔的前景。与此同时&#…

Vue3整合wangEditor(富文本编辑器框架) 以及提供存储渲染方案

目录 概述 Vue3整合wagnEditor 图片的上传 图片的删除 文章存储 文章渲染 概述 实现功能&#xff1a;管理端使用富文本编辑器编写文章内容&#xff0c;将编辑好的文章存入数据库或服务器中&#xff0c;前端应用读取存储的文章内容作展示。 本文章能提供 ①Vue3整合wangEdi…

伤感视频素材哪里找?五大平台助您深情表达

大家好&#xff01;制作视频时&#xff0c;找到合适的伤感视频素材可以极大地增强作品的情感表达。那么&#xff0c;伤感视频素材哪里找呢&#xff1f;今天&#xff0c;我将为大家介绍五个能提供优质伤感视频素材的平台&#xff0c;让您的视频作品更加动人。 蛙学网&#xff0…

2023ICPC网络预选赛 ( 2 ) (2) C.Covering【2-SAT、前后缀虚拟节点区间连边】

C.Covering 题意 给定一个长度为 n n n 的正整数数组 a a a&#xff0c;现在要从中选择一些下标&#xff0c;满足&#xff1a; 对于每个下标 i i i&#xff0c; i i i 和 i − 1 i - 1 i−1 至少 有一个被选对于所有选择的下标&#xff0c;任意两个下标 i , j ( i ≠ j…

Android适配平板屏幕尺寸

一、划分手机和平板 人为判断方法: 大于6英寸的就是平板。小于6英寸的都是手机 平板尺寸&#xff1a; 6英寸、7英寸、10英寸、14英寸… Android系统支持多配置资源文件&#xff0c;我们可以追加新的资源目录到你的Android项目中。命名规范&#xff1a; 资源名字-限制符 l…

C++进阶03 模板与群体数据

听课笔记简单整理&#xff0c;供小伙伴们参考~&#x1f95d;&#x1f95d; 第1版&#xff1a;听课的记录代码~&#x1f9e9;&#x1f9e9; 编辑&#xff1a;梅头脑&#x1f338; 审核&#xff1a;文心一言 目录 &#x1f433;课程来源 &#x1f40b;模板 &#x1f40b;8.…

Vue2 —— 学习(六)

一、Vue 脚手架 &#xff08;一&#xff09;介绍 Vue 脚手架是 Vue 官方提供的标准化开发工具 &#xff08;开发平台&#xff09; 脚手架版本最新版本 是 4.x 文档可以查看 http://cli.vuejs.org/zh/ 就是vue 官网文档中 的 vue.cli command line interface &#xff08;…

Python 爬虫基础——http请求和http响应

写本篇文章&#xff0c;我认为是能把自己所理解的内容分享出来&#xff0c;说不定就有和我一样有这样思维的共同者&#xff0c;希望本篇文章能帮助大家&#xff01;✨✨ 文章目录 一、 &#x1f308;python介绍和分析二、 &#x1f308;http请求三、 &#x1f308;http响应四、…

Python项目2 数据可视化

生成数据 数据可视化 指的是通过可视化表示来探索数据&#xff0c;它与数据挖掘 数据挖掘 紧密相关&#xff0c;而数据挖掘指的是使用代码来探索数据集的规律和关联。数据集可以是用一行代码就能表 示的小型数字列表&#xff0c;也可以是数以吉字节的数据。 漂亮地呈现数据关…

【论文笔记】Planning-oriented Autonomous Driving

原文链接&#xff1a;https://arxiv.org/abs/2212.10156 1. 引言 目前的自动驾驶工业界通常为不同任务部署不同的模型&#xff0c;但优化的孤立性会导致模块之间的信息损失、误差积累和特征不对齐。 一种更好的设计是将各种任务整合为多任务学习&#xff0c;即为共享的特征提…

设计模式之责任链模式讲解

概念&#xff1a;使多个对象都有机会处理请求&#xff0c;从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有对象处理它为止。最匹配的场景应该就是逐层审批的模式。 责任链模式只有两个角色&#xff…

wife_wife-攻防世界

题目 注册发现可以注册管理员,但是好像有条件 抓包试试 没思路了 看看其他师傅的wp&#xff0c;用到 js 原型链污染攻击 Nodejs原型链污染攻击基础知识 | Savants Blog (lxscloud.top) 网站后端是Node.js搭建的 原型链污染 简单来讲&#xff0c;通过 newUser.__proto__ …

RHCE实验2-DNS服务正反向解析

实验开始 一、DNS正向解析 注&#xff1a; server端&#xff1a;192.168.32.147 node端&#xff1a;192.168.32.141 网址&#xff1a;www.openlab.com 1、server端和node端都关闭安全软件&#xff08;以server端为例&#xff09; [rootserver ~]# setenforce 0 [rootser…

Java基于微信小程序的校园跑腿小程序,附源码

博主介绍&#xff1a;✌程序员徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

vue3+element plus图片预览点击按钮直接显示图片的预览形式

1 需求 直接上需求&#xff1a; 我想要直接点击下面这个“预览”按钮&#xff0c;然后呈现出预览图片的形式 ok&#xff0c;需求知道了&#xff0c;下面让我们来看看如何实现吧 ~ 2 实现 template部分 <el-buttontype"primary"size"small"click&qu…

链表中常见的使用方法逻辑整理

文章目录 1. 链表特点2. 链表创建3. 链表遍历通用方法3.1 在链表的开头添加元素3.2 在链表的结尾添加元素3.3 删除链表的第一个元素3.4 删除链表的最后一个元素3.5 遍历链表3.6 查找链表中的元素3.7 反转链表 4. 常见面试题4.1 相交链表4.2 反转链表4.3 环形链表4.4 环形链表 I…

easyui combobox下拉框组件输入检索全模糊查询

前引&#xff1a; easyui下拉组件&#xff08;combobox&#xff09;&#xff0c;输入检索下拉内容&#xff0c;是默认的右模糊匹配&#xff0c;而且不支持选择。因业务要求需要做成全模糊查询&#xff0c;目前网上搜索有两种方案&#xff1a; 1.修改easyui源码&#xff0c;这个…

LeetCode700:二叉搜索树中的搜索

题目描述 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在&#xff0c;则返回 null 。 代码 递归法 class Solution { public:TreeNode* searchBST(TreeN…