SpringBoot使用
1️⃣SpringBoot项目创建和运行
什么是SpringBoot
Spring是为了简化java程序开发的,而SpringBoot是为了简化Spring程序开发的,所以SpringBoot底层还是Spring。还是一个Ioc容器,具有存储Bean的功能。
SpringBoot翻译成中文:Spring脚手架
Spring和SpringBoot的区别
Spring我们知道,Spring是包含了众多工具方法的Ioc容器,Spring包含了很多模块:SpringMVC,SpringAOP,SpringJDBC。而SpringBoot则不太一样,SpirngBoot并不是Spring中包含的这些模块,SpirngBoot是为了快速开发Spring项目的一个框架(SpringBoot的核心理念是约定大于配置),它的诞生是为了快速开发Spring项目。
SpringBoot相比于Spring的优点:
- 内置了web容器:Tomcat,部署更方便
- 取消了xml配置文件,取消了一些繁琐的配置,比如说Spring项目中的类要想注册到Spring中必须得加注解,然后在xml配置文件中添加扫描路径。在SpringBoot中则直接加注解,将类置于启动类所在的包或其子包中即可,这就是约定大于配置的体现。
- SpringBoot创建项目时则可添加依赖,添加依赖更方便
创建SpringBoot项目
分步骤操作:
1️⃣安装Spring Boot Helper插件,只有安装了这个插件才能创建SpringBoot项目(专业版的Idea无需安装)
2️⃣
3️⃣
4️⃣
5️⃣创建好的SpringBoot项目:
项目目录简介
创建好SpringBoot项目后,有一个复杂的项目目录,其中有一些文件是没有啥用的,直接删掉就可以了:圈的四个文件直接删掉就行了。
介绍一下项目文件:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CnVktATL-1677769049743)(https://hao-typora.oss-cn-beijing.aliyuncs.com/img/image-20221201165038230.png)]
1️⃣java目录:放的是java源代码,默认会有个启动类:DemoApplication
2️⃣resources:放的是一些资源文件:
static放的是前端的一些文件(haml/css/js等)
templates放的是模板文件:比如servlet个人博客项目中的导航栏,当时是每个页面都有一份导航栏的代码,现在这个导航栏的代码只有一份就行了,放到templates文件夹下就行了,在其他页面可以引入。
application.properties:放的是SpringBoot的一些配置信息,比如要修改当前程序占用的端口号,就可以在这里配置。
3️⃣test文件:单元测试文件,放的是测试代码
4️⃣pom.xml:Maven项目所依赖的配置文件和application.properties不同,application.properties是SpringBoot项目所依赖的配置文件(以键值对存储信息)
约定大于配置
这是SpringBoot中的一种思想,意思就是SpringBoot的设计人员把一些东西都约定好,让普通开发人员都遵守这个约定,就不需要程序员自己手动配置一些东西了,目的是为了简化开发。那SpringBoot中都有哪些约定呢?
1️⃣要注入到容器的类必须在启动类所在的包或启动类所在的包的子包中,否则无法注入到容器中。
比如下面这种情况,就不会把TestController类注册到容器中。
在Spring阶段,类注册到容器中需要在配置文件中配置一个扫描路径,扫描路径下的类才有可能注册到容器中,而在SpringBoot阶段,就不需要这个配置了,但是需要遵守上面的约定,才能正确扫描到这个类,这就叫做约定大于配置。省去了xml配置,让操作更简单。
2️⃣resources目录下有个配置文件:application.properties这个配置文件的名字是不能随便更改的,一旦更改了名字,这个配置文件就不生效了。不像Spring时的.xml格式的配置文件叫啥名字都行。这也算约定大于配置的思想。
SpringBoot的优势
SpringBoot相比与Spring的优势:
1️⃣启动时即可添加依赖,可以快速集成各种框架
2️⃣SpringBoot项目内置了Tomcat,部署项目更方便。
3️⃣抛弃了xml格式的配置文件,配置更方便
2️⃣SpringBoot配置文件
配置文件的作用
整个项目中所有的重要信息都是在配置文件中配置的:
- 数据库的连接信息,用户名和密码等
- 项目所占用的端口号
- 一些日志
配置文件的格式
配置文件有两种格式:
.properties
.yml
在创建SpringBoot项目的时候会自动生成一个第一种格式的配置文件:application.properties,这个配置文件的文件名不能改,一旦改了,配置失效。
如果要使用第二种格式的配置文件,文件名必须为application.yml,否则配置失效。
如果这两种配置文件同时存在,那这俩文件都会生效,假如说俩文件的配置项一样,都配置了端口号,那application.properties的优先级是更高的。
application.properties
#配置端口号
server.port=9090
#配置数据库连接
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/databaseName?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=1234
#自定义配置项
mykey.key1=bit
application.properties用的是键值对存储信息,可以有SpringBoot内置的配置项,比如server.port。
也可以有自定义的配置项:比如:myKey.key1=bit
代码读取properties
如何在项目代码中读取配置文件中的数据?
使用的是value注解,注解中参数格式是:“${配置项的键}”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kWAVpLJZ-1677769049745)(https://hao-typora.oss-cn-beijing.aliyuncs.com/img/image-20221202194455610.png)]
🔑系统配置项和自定义配置项都是可以在代码中读取到的,读取方式也一样,都是使用的@Value注解。
application.yml
yml格式的配置文件相比与properties格式的配置文件有以下几点优势:
- yml支持更多的数据类型:数组,对象,集合等
- yml支持更多的语言:Golang,PHP,python,JS等
yml基础语法是key: value 。key和value之间使用冒号+空格分隔,空格不可以省略!!!
value如果是字符串,默认是不需要加双引号的。
#端口号
server:
port: 9094
#数据库连接
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/databaseName?characterEncoding=utf8
username: root
password: 1234
使用yml和使用properties连接数据库对比:
代码读取yml
读取yml的方式和读取properties的方式是一样的,也是使用的@Value注解。
配置对象
配置文件中配置一个对象:
#配置对象
student:
id: 1
name: 张三
age: 18
#行内写法和上面这种写法效果一致
student: {
id: 1,name: 张三,age: 18}
- 这就相当于在配置文件中配置了一个对象,可以理解为一个类:student,其中有三个属性:id,name,age。
- 既然要把这个对象从配置文件中取出来,那可以用@Value注解,不过这样比较麻烦,如果属性多的话,写代码确实比较麻烦:
@Value("${student.id}")
private int id;
@Value("${student.name}")
private String name;
@Value("${student.age}")
private int age;
- 那其实是有比较合理的方式来从配置文件中读取配置项到代码中的:比如使用一个Student类,给该类添加三个属性:id,name,age。使用这个类来接收配置项。
接收配置项的student类:
package com.example.demo.model;
import org.springframework.boot.context