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.hqwc.cn/news/637116.html

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

相关文章

内网云盘如何内网穿透实现公网访问

云盘是一种专业的互联网存储工具&#xff0c;是互联网云技术的产物&#xff0c;它通过互联网为企业和个人提供信息的存储、读取、下载等服务&#xff0c;具有安全稳定、海量存储的特点。随着企业信息化发展&#xff0c;云盘系统需求不断扩大&#xff0c;相关系统软件被广泛应用…

数据分析(1)

数据分析基础&#xff08;1&#xff09; 为了让刚开始学习的朋友对数据分析有一个清晰的整体认识&#xff0c;因此笔者在此对数分进行一个较为详细的介绍有助于大家更好的在宏观层面进行理解&#xff0c;避免在后续学习中产生迷茫。 数据分析的概念 定义&#xff1a;数据分析…

java线程-线程池

简介 工作原理 如何获取线程池对象 构造器的参数含义 注意事项 构造器-ThreadPoolExecutor // ArrayBlockingQueue 是一个有界的阻塞队列&#xff0c;它的内部实现是一个数组。有界的意思是它的容量是有限的&#xff0c;我们必须在创建 ArrayBlockingQueue 实例的时候指定容量…

我与C++的爱恋:类和对象(四)

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;我与C的爱恋 ​ 朋友们大家好&#xff01;本篇是类和对象的最后一个部分。 一、static成员 声明为static的类成员称为类的静态成员&#xff0c;用static修饰的成员变量&#xff0c;称之…

VR全景:为户外游玩体验插上科技翅膀

随着VR全景技术的愈发成熟&#xff0c;无数人感到惊艳&#xff0c;也让各行各业看到了一片光明的发展前景。尤其是越来越多的文旅景区开始引入VR全景技术&#xff0c;相较于以往的静态风景图&#xff0c;显然现在的VR全景结合了动态图像和声音更加吸引人。 VR全景技术正在逐步改…

【youcans电力电子仿真 03】Boost变换电路

【youcans电力电子仿真 03】Boost变换电路 Boost变换电路是Buck变换电路的对偶拓扑&#xff0c;也属于非隔离型直流变换器&#xff0c;其输出电压大于输入电压。Boost变换电路具有效率高、输出稳定、控制简单和成本低的优点&#xff0c;广泛应用于电子设备、光伏发电、无线通信…

python爬虫小案例——汽车之家

本篇文章是使用bs4中的BeautifulSoup和requests解析网页和获取数据&#x1f451;&#x1f31f; 文章目录 &#x1f31f;前言一、&#x1f349;bs4中的BeautifulSoup二、&#x1f349;bs4的语法三、&#x1f349;内容实践1. 确定想要爬取的内容2. 分析网页3. 获取数据分析 &…

MyBatis 从入门到精通:分页在MyBatis中使用

MyBatis 从入门到精通&#xff1a;分页在MyBatis中使用 先欣赏下美女&#x1f680;分页在MyBatis中使用&#x1f469;‍&#x1f4bb;摘要&#x1f3af;引言&#x1f4a1;正文内容&#x1f615; 为什么要分页&#xff1f;&#x1f680; 使用Limit分页介绍&#x1f4c4; 使用Li…

05集合-CollectionListSet

Collection体系的特点、使用场景总结 如果希望元素可以重复&#xff0c;又有索引&#xff0c;索引查询要快? 用ArrayList集合, 基于数组的。(用的最多) 如果希望元素可以重复&#xff0c;又有索引&#xff0c;增删首尾操作快? 用LinkedList集合, 基于链表的。 如果希望增…

Pytorch入门实战: 06-VGG-16算法-Pytorch实现人脸识别

第P6周&#xff1a;VGG-16算法-Pytorch实现人脸识别 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 &#x1f3e1; 我的环境&#xff1a; 语言环境&#xff1a;Python3.8 编译器&#xff1a;Jupyter La…

映射调试上下文MDC

1.简介 MDC 介绍​ MDC&#xff08;Mapped Diagnostic Context&#xff0c;映射调试上下文&#xff09;是 log4j 和 logback 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的Map&#xff0c;可以往其中添加键值对。MDC 中包含的内容可以被同…

英特尔直面AMD强势出击,新Xeon CPU 3D堆叠 288核

英特尔的新Xeon CPU直面AMD&#xff1a;3D堆叠 288核&#xff01; 英特尔加速其“四年五个节点”战略&#xff0c;计划在 2025 年推出搭载 3D 堆叠技术的 Clearwater Forest Xeon 数据中心 CPU。采用新的封装技术&#xff0c;该芯片将采用 tile-based CPU 设计&#xff0c;旨在…