SpringBoot快速入门
选中 Web
,然后勾选 Spring Web
由于我们需要开发一个 web
程序,使用到了 SpringMVC
技术,所以按照下图红框进行勾选
-经过以上步骤后就创建了如下结构的模块,它会帮我们自动生成一个 Application
类,而该类一会再启动服务器时会用到
2创建 Controller
在 com.itheima.controller
包下创建 BookController
,代码如下:
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println("id ==> "+id);
return "hello , spring boot!";
}
}
这个类中的东西很简单,就在类上添加了一个 @SpringBootApplication
注解,而在主方法中就一行代码。我们在启动服务器时就是执行的该类中的主方法。
pom.xml
配置文件中的内容`
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.5.0
com.itheima
springboot_01_quickstart
0.0.1-SNAPSHOT
8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
SpringBoot快速入门(网址版)
https://spring.io/projects/spring-boot
进入到 SpringBoot
官网后拖到最下方就可以看到如下内容
然后点击 Spring Initializr
超链接就会跳转到如下页面
选择 Spring Web
可以点击上图右上角的 ADD DEPENDENCIES... CTRL + B
按钮,就会出现如下界面
以上步骤完成后就可以生成 SpringBoot
工程了。在页面的最下方点击 GENERATE CTRL + 回车
按钮生成工程并下载到本地,如下图所示
以上步骤完成后就可以生成 SpringBoot
工程了。在页面的最下方点击 GENERATE CTRL + 回车
按钮生成工程并下载到本地,如下图所示
SpringBoot快速入门(阿里云版)
只需要将地址进行修改即可
http://start.aliyun.com或https://start.aliyun.com
SpringBoot快速入门
SpringBoot
工程时已经在 pom.xml
中配置了如下插件
org.springframework.boot
spring-boot-maven-plugin
Maven
的 package
指令打包就会在 target
目录下生成对应的 Jar
包。注意:该插件必须配置,不然打好的
jar
包也是有问题的。
jar
包所在位置,在 命令提示符
中输入如下命令jar -jar xxxx.jar
SpringBoot概述
properties
标签中定义了各个技术软件依赖的版本,避免了我们在使用不同软件技术时考虑版本的兼容问题。在 properties
中我们找 servlet
和 mysql
的版本如下图标签是进行依赖版本锁定,但是并没有导入对应的依赖;如果我们工程需要那个依赖只需要引入依赖的
groupid和
artifactId不需要定义
version`。而 build
标签中也对插件的版本进行了锁定,如下图
看完了父工程中 pom.xml
的配置后不难理解我们工程的的依赖为什么都没有配置 version
。
在我们创建的工程中的 pom.xml
中配置了如下依赖
进入到该依赖,查看 pom.xml
的依赖会发现它引入了如下的依赖
里面的引入了 spring-web
和 spring-webmvc
的依赖,这就是为什么我们的工程中没有依赖这两个包还能正常使用 springMVC
中的注解的原因。
@SpringBootApplication
public class Springboot01Application {
public static void main(String[] args) {
SpringApplication.run(Springboot01Application.class, args);
}
}
SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目
SpringBoot工程运行后初始化Spring容器
,扫描引导类
所在包加载bean
======================================================================================
配置文件
系统属性配置
修改配置:
#服务器端口修改
server.port=80
#关闭日志运行图标
spring.main.banner-mode=off
logging.level.root=debug
4. 因为有更多的关于配置的信息:
查询方法如下:
https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties
配置文件格式
server.port=80 修改端口号
server:
port: 81
server:
port: 82
注意:SpringBoot
程序的配置文件名必须是 application
,只是后缀名不同而已。
创建结尾为yml,yaml或者properties的application文件
注意:
优先级
application.properties
>application.yml
>application.yaml
yaml(yml)格式
大小写敏感
属性层级关系使用多行描述,每行结尾使用冒号结束
使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
空格的个数并不重要,只要保证同层级的左侧对齐即可。
属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
# 表示注释
核心规则:数据前面要加空格与冒号隔开
数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔,例如
enterprise:
name: itcast
age: 16
tel: 4006184000
subject: //数组
- Java
- 前端
- 大数据
subject: [java,前端,大数据] //也是数组
users: //对象数组 第一种
- name: tom
age: 4
- name: tim
age: 8
users1: //对象数组 第二种
-
name: tom
age: 4
-
name: tim
age: 8
usrs3: [{name:tom,age:4},{name:tim,age:8}] //第三种对象数组
yaml(yml)配置文件数据读取
使用 @Value("表达式")
注解可以从配合文件中读取数据,注解中用于读取属性名引用方式是:${一级属性名.二级属性名……}
在yaml文件种读取数据只需要 ${}即可
#转义字符不生效
user1: ${users}\temp
结果:d/window10\temp
#加了字符串 转义字符就生效了
user2: "${users}\temp"
结果:d/window10 emp
上面方式读取到的数据特别零散,SpringBoot
还可以使用 @Autowired
注解注入 Environment
对象的方式读取数据。这种方式 SpringBoot
会将配置文件中所有的数据封装到 Environment
对象中,如果需要使用哪个数据只需要通过调用 Environment
对象的 getProperty(String name)
方法获取。具体代码如下:
注意:这种方式,框架内容大量数据,而在开发中我们很少使用。
1. 使用@ConfigurationProperties注解绑定配置信息到封装类中
2. 封装类需要定义为Spring管理的bean,否则无法进行属性注入
SpringBoot
还提供了将配置文件中的数据封装到我们自定义的实体类对象中的方式。具体操作如下:
将实体类 bean
的创建交给 Spring
管理。
在类上添加 @Component
注解
使用 @ConfigurationProperties
注解表示加载配置文件
在该注解中也可以使用 prefix
属性指定只加载指定前缀的数据
在 BookController
中进行注入
注意: 使用第三种方式,在实体类上有如下警告提示
这个警告提示解决是在 pom.xml
中添加如下依赖即可
org.springframework.boot
spring-boot-configuration-processor
true
多环境配置
以后在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql
,连接自己电脑上的 mysql
即可,但是项目开发完毕后要上线就需要该配置,将环境的配置改为线上环境的。
在 application.yml
中使用 ---
来分割不同的配置,内容如下
#设置启用的环境
spring:
profiles:
active: dev
---
#开发
spring:
profiles: dev
server:
port: 80
---
#生产
spring:
profiles: pro
server:
port: 81
---
#测试
spring:
profiles: test
server:
port: 82
---
注意:
在上面配置中给不同配置起名字的 spring.profiles
配置项已经过时。最新用来起名字的配置项是
#开发
spring:
config:
activate:
on-profile: dev
properties
类型的配置文件配置多环境需要定义不同的配置文件
是开发环境的配置文件。我们在该文件中配置端口号为
80`server.port=80
是测试环境的配置文件。我们在该文件中配置端口号为
81`server.port=81
SpringBoot
只会默认加载名为 application.properties
的配置文件,所以需要在 application.properties
配置文件中设置启用哪个配置文件,配置如下:
spring.profiles.active=dev
jar
包其实就是一个压缩包,可以解压缩,然后修改配置,最后再打成jar包就可以了。这种方式显然有点麻烦,而 SpringBoot
提供了在运行 jar
时设置开启指定的环境的方式,如下java –jar xxx.jar –-spring.profiles.active=test
那么这种方式能不能临时修改端口号呢?也是可以的,可以通过如下方式
java –jar xxx.jar –-server.port=88
当然也可以同时设置多个配置,比如即指定启用哪个环境配置,又临时指定端口,如下
java –jar springboot.jar –-server.port=88 –-spring.profiles.active=test
大家进行测试后就会发现命令行设置的端口号优先级高(也就是使用的是命令行设置的端口号),配置的优先级其实 SpringBoot
官网已经进行了说明,参见 :
以Maven为主 boot为辅
=================================================
配置文件分类
有这样的场景,我们开发完毕后需要测试人员进行测试,由于测试环境和开发环境的很多配置都不相同,所以测试人员在运行我们的工程时需要临时修改很多配置,如下
SpringBoot
中4级配置文件放置位置:
==说明:==级别越高优先级越高
SpringBoot整合第三方技术
直接使用即可
注意: 这里的引导类所在包必须是测试类所在包及其子包。
例如:
com.itheima
com.itheima
如果不满足这个要求的话,就需要在使用 @SpringBootTest
注解时,使用 classes
属性指定引导类的字节码对象。如 @SpringBootTest(classes = Springboot07TestApplication.class)
=========================================
我们代码中并没有指定连接哪儿个数据库,用户名是什么,密码是什么。所以这部分需要在 SpringBoot
的配置文件中进行配合。
在 application.yml
配置文件中配置如下内容
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db
username: root
password: 1234
注意:
SpringBoot
版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区 jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
,或在MySQL数据库端配置时区解决此问题
com.baomidou
mybatis-plus-boot-starter
3.4.3
Druid
依赖
com.alibaba
druid
1.1.16