SpringBoot快速入门

发布于:2025-03-16 ⋅ 阅读:(21) ⋅ 点赞:(0)

Spring boot框架

Spring Boot倡导约定优于配置,将简化开发发挥到极致。使用Spring Boot框架可以快速构建Spring应用,再也不需要 大量的繁琐的的各种配置。

SpringBoot框架设计的目标是:程序员关注业务逻辑就行面的事儿交给Spring Boot就行。

Spring Boot特性的核心

1.启动器starter

之前做web开发,需要引入json处理的jar包,tomcat服务器,SpringMVC的依赖,还需要管理版本,—繁琐

Spring Boot引入starter启动器,可以自动管理这个功能相关的依赖,自动管理依赖版本的控制

2.自动配置

之前需要手动配置之后用注解,现在Spring Boot会尽可能的自动配置Spring应用和第三方库

举例:如果要进行事务的控制,不用做任何事务相关的配置,只需要在service类上添加@Transactional注解即可


快速搭建Spring Boot项目

Maven

Maven是一个项目管理工具

Maven提供的功能非常多,能提高我们的开发效率,减少我们的开发,减少Bug
我们使用Maven来进行项目构建和管理依赖

依赖管理

Maven是⼀个项目管理工具,通过pom.xml文件的配置获取jar包,而不用手动去添加jar包

依赖:当前项目运行所需要的jar包

依赖配置

比如前面学习JDBC时,我们需要手动下载mysql-connector-java的包.并且添加到项目中。

如果使用Maven,我们只需要在pom. xml中引入mysql-con| nector-java的依赖就可以了

  1. 在pom文件< dependencies> 标签内,添加依赖坐标
 <dependency>
	<groupId>mysql</groupId> 
 	<artifactId>mysql-connector-java</artifactId>
	<version>8.0.30</version>
</dependency>
依赖传递

早期我们没有使用maven时,向项目中添加依赖的jar包,需要把所有的jar包都复制到项目工程下。

比如A依赖B,B依赖C,那么A项目引入B的同时,也需要引入C,如果我们手动管理这个依赖,这个过程就会比较麻烦,我们需要知道每个库都依赖哪些库,以及这些依赖之间的版本是如何关联的

比如去医院看病,需要带上以往的病历,检查结果,处方等,并且要确认带的资料是正确的,如果日期错了,或者患者错了,带少了,就需要回去重新拿。

使用maven的话,就可以避免管理所需依赖的关系。我们只需要在pom文件中,定义直接依赖就可以了,由于maven的依赖具有传递性,所以会自动把所依赖的其他jar包也一起导入

依赖排除

当前阶段我们需要依赖的库并不多,但随着项目的越来越复杂,库之间的依赖关系也会变得越来越复杂。

排除依赖:指主动断开依赖的资源。

比如,我下了一个快递单子,默认会有一个服务,就是快递小哥会上门取件,但是我刚好要出门,而且顺路经过站点,也可以选择自己送过去

<dependency> 
	<groupId>org.springframework</groupId> 
	<artifactId>spring-core</artifactId> 
	<version>6.0.6</version>  
	<exclusions> 
		<exclusion> 
			<artifactId>spring-jcl</artifactId> 
			<groupId>org.springframework</groupId> 
		</exclusion> 
	</exclusions> 
</dependency>
Maven Help插件

当项目比较复杂时,我们就会有Jar包冲突的问题,这时候就需要去解决依赖冲突。解决冲突之前,需要先找到冲突,我们可以使用MavenHelp插件来观察包和包之间的依赖关系。

插件就是对程序的⼀些特定场景,做出⼀些特定的功能的扩展.

安装插件:File->Settings->Plugins->搜索’Maven Help’->找到对应插件,点击Install安装即可,安装后需要重启下idea,才能生效

Maven仓库

在 Maven中,根据groupId、 artifactId、version的配置,来唯一识别一个 jar包,缺一不可。

当我们在 pom文件中配置完依赖之后,点击刷新,Maven会根据坐标的配置,去仓库里寻找 Jar包,并把他下载下来,添加到项目中。这个 Jar包下载的地方就称为仓库。

仓库:用于存储资源,管理各种 jar包

Maven仓库的本质就是一个目录,这个目录被用来存储开发中所有依赖

Maven仓库分为两大类:本地仓库和远程仓库。其中远程仓库又分为中央仓库,私服和其他公共库

本地仓库

顾名思义是自己计算机上的⼀个目录(用来存储jar包)

当项目中引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包

如果有,则在项目直接引用

如果没有,则去中央仓库中下载对应的jar包到本地仓库

中央仓库

maven软件中内置一个远程仓库地址,就是中央仓库,服务于整个互联网。由Maven团队维护,全球唯一。

仓库地址:https://repo1.maven.org/maven2/

私服

一般由公司团队搭建的私有仓库.具有一定的权限限制

Maven依赖下载的顺序发生了变化

流程

当Maven需要下载资源时,第一步是从本地仓库获取,不存在就从私服请求,私服没有就从中央仓库下载,中央仓库没有该资源就会报错,存在就会先缓存在私服,再缓存到本地仓库

配置国内源

因为中央仓库在国外,所以下载起来会比较慢,所以需要配置国内的公开的远程仓库

上述配置的内容,只对当前项目生效,为了让后续新建的项目也生效,需要重新设置一下新项目的Settings

引入Maven项目

Spring Boot的jar包和普通jar包的区别

依赖管理:

Spring Boot的JAR包通常包含了应用程序运行所需的所有依赖项,也就是说它是一个“fat jar”(胖JAR包),这种打包方式使得应用可以独立运行,而不需要外部的类路径或应用服务器上的其他依赖。

普通的JAR文件一般只包含一个类库的功能,并且需要依赖于特定的类路径来找到其他的类库或者框架,这些依赖项通常在部署环境中已经存在,比如在一个应用服务器中。

可执行性:

Spring Boot的JAR文件可以通过直接执行这个JAR文件来启动应用程序通过 java-jar XXX. jar 命令就可以直接运行应用程序。

普通的JAR文件通常是不可直接执行的,需要通过指定主类(mainclass)的方式或者其他方式来启动一个应用程序,

SpringBoot的这些特性使得部署和运行变得更加简单和方便,特别是在微服务架构中

每个服务都可以被打包成独立的JAR文件并部署到任何支持Java的地方。

什么是脚手架?

脚手架是指在项目初期提供基础结构和工具支持的临时框架或工具,旨在帮助快速搭建项目原型,避免重复性工作

通过脚手架快速搭建,一个是官方提供的脚手架

链接

生成后的文件放到对应的项目即可

社区版的需要安装Spring Boot Help插件

idea内置的脚手架

社区版的idea需要jdk17

专业版的无要求

目录介绍

Spring Boot项目有两个主要的目录:

<src/ main/ java: Java源代码

src/ main/ resources:为静态资源或配置文件:

/static:静态资源文件夹,比如前期学的js,css,html等静态文件,不需要服务器数据进行绑定的页面

/ templates: 模版资源文件夹,主要存放动态模板文件,比如JSP, Freemarker, Thymeleaf等需要服务器动态渲染数据的文件

src/ test/ java: 测试代码源代码

target:编译后的文件路径

pom. xml: maven配置文件

为什么要以继承父工程的方式引入Spring Boot

继承父工程的优势

  1. 依赖管理:可以在父工程中定义依赖的版本,子模块可以直接引用而不必指定版本号。
  2. 插件管理:可以在父工程中配置常用的插件及其版本,子模块可以直接使用这些配置。
  3. 属性设置:可以在父工程中定义一些通用的属性,如项目编码、Java版本等。
  4. 统一配置:可以统一多个子模块的构建配置,确保一致性。

运行项目

当前类被 @SpringBootApplication 标注,被该注解标注的类是springboot项目的入口类。

该类的main方法就是整个springboot项目的入口。

通过观察@SpringBootApplication 的源码

该注解被以下三个注解标注了:

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

也就是说 @SpringBootApplication 注解是一个复合注解,同时拥有以上三个注解的功能。

SpringBoot内置了Tomcat服务器,无需配置即可直接运行
运行成功

Spring Boot来实现和浏览器及用户的交互。

在创建的项目包路径下创建HelloController文件,实现代码如下:

@RequestMapping("/hello")
@RestController
public class HelloController {
    @RequestMapping("/h1")//映射,对应到url
    public String hello(){
        return "hello welcome to my server";
    }
}

为什么要加@RequestMapping 注解

原因:实现 URL 路由映射

为什么要加RequestMapping 注解

@RequestMapping 可以修饰类和方法,访问地址是类路径 + 方法路径

浏览器:

输入网址:http://127.0.0.1:8080/hello/h1

通过IP地址127.0.0.1定位到网络上的一台计算机,127.0.0.1就是本机

通过端口号8080找到计算机上对应的进程,也就是在本地计算机中找到正在运行的8080端口的程序

/ hello/h1是请求资源位置

资源:对计算机而言资源就是数据

web资源:通过网络可以访问到的资源(通常是指存放在服务器上的数据)

http://127.0.0.1:8080/hello/h1,就是向本地计算机中的8080端口程序,获取资源位置是/hello/h1的数据

8080端口程序,在服务器找/hello位置的资源数据,发给浏览器

服务器:

接收到浏览器发送的信息 (如: /hello/h1)

在服务器上找到/hello/h1的资源

把资源发送给浏览器


总结

Spring Boot是为了快速开发Spring而诞生的

Spring Boot具备:

Spring Boot提供了启动添加依赖的功能,可以快速集成框架。

内置web服务器,无需配置Tomcat等Web服务器,直接运行和部署程序。

减少使用繁琐的XML,使用注解和配置的方式进行开发。

支持更多的监控的指标,可以更好的了解项目的运行情况等特点。

Spring Boot可使用Idea或网页创建,它的设计思想是约定大于配置,类上标注@SpringBootApplication就可以启动Spring Boot项目了