SpringBoot-基础入门笔记(1)
前言
非常感谢三根草堂师父的Spring Boot系列教程,内容基本来源于三根草堂师父,也是学习边记录,希望通过学习能写出自己写出一个项目,且对Javaweb类的程序有一定了解,并能够入门Java安全代码审计。
环境搭建
版本要求
JDK : 8+
Maven :3.5.x+
这里我选用2.5.2版本的Spring Boot
新建一个SpringBoot项目
方法一:Idea手动导入
创建一个空的Maven项目,在File-Setting中配置好Maven

maven和其仓库目录根据自己的情况修改。
创建好项目后,会自动生成一个pom.xml,
再导入依赖:(相关说明在注解里)
1 |
|
这里我们还需要配置下Setting.xml文件

打开后在Setting标签下添加:
1 | <!--下面是添加阿里云镜像,这样下载依赖更快,不过我在国外使用这个镜像反而无法下载,所以如果不适用直接注释掉就好了--> |
方法二: 网站下载
通过Spring Initilizr配置好下载就行了。
方法三:通过IDEA新建(和方法二差不多)

Maven配置
有时候,如果我们依赖文件导入到一半中止,这时候会有一些错误,那么我们可以用一个清理Maven仓库的脚本, 修改一下仓库路径,然后保存为.bat文件,双击即可清理
1 | @echo off |
一个简易的Hello World
Application和Controller

在src-main-java下新建一个package,然后新建我们的HelloApplication Class,再新建一个Controller package 来存放我们的Controller classes,需要注意的是,我们的Controller Class必须放在application class的子目录里。注意,通过Spring Initilizr网站上直接下载的直接就有这些class了。
Application Class的代码:
1 |
|
Controller的代码:
1 | //@Controller |
RestController
Controller Class需要加上@Controller
如果要让数据返回到response body中
,需要使用@ResponseBody
@RestController 相当于 @Controller+@ResponseBody,所以我们也可以直接用这个代替
@RequestMapping表示处理请求
jar打包运行
打包
pom.xml中加入以下代码
1 | <!-- 可以使用mavin插件 可以用来打包 --> |
然后在Idea右侧的Maven中双击package即可
运行
在target文件夹中可找到我们生成的jar文件,在当前文件所在目录的cmd中用java -jar filename运行起来即可
版本锁定
Spring Boot所继承的spring-boot-starter-parent这个副工程为我们对常用的依赖进行了版本锁定(在父工程的pom.xml文件中)。
我们可以通过直接指定版本号(在我们的pom.xml)和覆盖properties配置来修改依赖的版本(在父工程的pom.xml文件中)。。
Starter机制
一个starter针对一种特定的场景,内部引用了该场景所需要的依赖,所以我们不需要单独引入多个依赖。
命名规律
官方starter都是以 spring-boot-starter 开头后面跟上场景名称。例如:spring-boot-starterdata-jpa
非官方starter则是以 场景名-spring-boot-starter 的格式,例如:mybatis-spring-boot-starter
非官方的starter是不会被Spring Boot的父工程进行版本指定的,所以我们需要指定version
YAML文件配置(重要)
介绍
YAML是以yml为后缀的文件,用来完成XML所完成的任务,易于阅读且简单明了。yaml文件应该放在resources文件夹中,如application.yml
约定
key: value冒号后面必须有一个空格用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的
缩进时不允许使用
TAB键,只允许用空格命名时,
lastName和last-name都可以
语法
1 | name1: sangeng//可以不用引号 |
Spring Boot读取YML
@Value注解
该注解只能获取简单类型的值(8种基本数据类型以及其包装类,String,Date)
1 |
|
加了@Value的Class必须要交由Spring容器管理,如此处的@RestController
@ConfigurationProperties 注解 与Lombok插件
使用@ConfigurationProperties的Class必须要交由Spring容器管理。
yml文件中:
1 | student2: {name: jack,age: 21} |
Student Class中:
1 | //根据我们的attribute帮我们生成set/get方法 |
要求对应的属性要有set/get方法,而此处我们用Lombok这个依赖帮我们自动完成这件事,所以我们不需要手动生成set/get方法
当然,我们还需要安装Lombok 插件:
1 | <dependency> |
HelloController中
1 | //因为创建Student类的instance,所以用autowired可以自动注入,从Spring容器中获取数据,赋值给下面的变量 |
@ConfigurationProperties 配置提示
另外,如果我们使用了@ConfigurationProperties注解,我们可以增加如下依赖,这样在写配置的时候会有提示
1 | <dependency> |
重启idea即可
YML和Properties转换
application.yml需要改成application.properties
问题解决
依赖冲突
造成原因
A依赖B(低版本)
C依赖B(高版本)
若你先引入A,那么低版本的B会被引入,再引入C后,C就找不到高版本的B,就会出现依赖冲突
解决方法
下载Maven Helper插件,重启idea后,打开pom.xml,下面就有Dependency Analyzer,refresh后可以找到冲突项,然后选择低版本的,右键exclude,再次刷新后问题解决。
修改依赖后如何生效?
很简单,右上角有一个Maven的图标,load一下change就好了
Reference
三根草堂师父的Spring Boot系列教程