目录
SpringBoot
SpringBoot创建和使用
什么是Spring Boot
在之前的学习中我们了解了Spring,Spring是具有众多工具方法的IoC容器,Spring是为了简化Java程序开发的,而Spring Boot就是为了简化Spring程序的开发
Spring Boot优点
1.快速集成框架,Spring Boot 提供了启动添加依赖的功能
2.内置运行容器,无需配置Tomcat等Web容器,直接运行部署程序
3.快速部署项目,无需外部容器即可启动并运行项目
4.抛弃繁琐的xml,使用注解和配置的方式进行开发
5.更多的监控指标,更好的了解项目的运行情况
Spring Boot项目的创建
这里使用的是idea社区版(2021.3.2)需要安装插件(Spring Boot Helper)才能创建Spring Boot
安装完成之后可以创建新项目来验证是否成功安装,有下面图标表示安装完成
还可以通过Spring官网提供的网页进行创建Spring Boot项目
项目目录介绍和运行
目录介绍
项目运行
Spring Boot项目创建成功我们就来试着运行
可以看到输出的内容是我们所需要的,但是具体细节内容还需要后面介绍,这里只是先验证是否能使用
SpringBoot核心设计思想
我们在不修改代码的前提下只是将TestController修改到别的包中,发现程序报错了
这就需要提及SpringBoot核心设计思想:约定大于配置,SpringBoot会扫描启动类同级目录或下级目录,必须按照约定才能正常运行
SpringBoot的配置文件
在SpringBoot项目中主要的代码就两类,一是业务代码(Java下的),另一类就是resource下的资源文件,因此就能看出配置文件的重要性
配置文件的作用
在项目中所有重要的数据都是在配置文件中配置的
1.数据库的连接信息(用户名和密码的设置等)
2.项目的启动端口
3.第三方系统调用秘钥等信息
4.用于发现和定位问题的普通日志和异常日志等
配置文件的格式
SpringBoot提供了两种格式的配置文件分别为.properties和.yml
注意事项
在SpringBoot中.properties和.yml配置文件理论上是可以同时存在的,当两个配置文件有着相同的配置,那么会以.properties为主,说明是 .properties 配置文件件的优先级最高,但加载完 .properties文件之后,也会加载 .yml文件的配置信息,但是为了维护建议采用统一的配置文件格式, .properties配置文件是早期的配置文件格式,也是SpringBoot默认的配置文件
properties配置文件
properties的设置
#设置端口号
server.port=9090
#设置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myblog2023?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=12345678
properties是以键值对的形式配置的,key和value是以"="连接的
配置文件中可以使用"#"添加注解信息
配置文件内容分为SpringBoot内置的配置项和用户自定义的配置项
properties的读取
在项目中想要获取配置文件中的内容,需要添加@Value注解
@Value要使用${}格式才能正常读取
properties的缺点
properties是以key-value的格式配置的,但是在配置key时可能出现很多冗余的信息,如何简化就需要使用yml配置格式了
yml配置文件
yml是YAML的缩写,全称 Yet Another Markup Language翻译成中文是"另一种标记语言"
yml语法
注意:冒号后面的空格,以及多级目录的层级划分
yml读取方式与properties的方式相同都是使用@Value注解
yml字符串修饰符的问题
yml配置如果使用了双引号修饰value值,那么value值中的特殊字符串就会发挥自身的用途
yml配置对象
在配置对象时读取需要添加注解@ConfigurationProperties配合类注解,并且类中的getter()和setter()方法必不可少
yml配置集合
注意配置的格式"-"和空格是必不可少的,读取和读对象是一样的都是采用@ConfigurationProperties配合类注解一起,我这里使用了@Data注解内置了get()和set()方法
解决配置文件乱码问题
我们在application.properties配置文件中写的注解等中文,在关闭项目在打开后就会出现乱码现象,如何解决呢
修改encoding的编码格式为utf-8,注意设置当前项目和以后项目两处的编码格式
多平台的配置文件设置
一个项目需要在多个环境下部署,如何解决不同环境下的配置问题,可以设置不同名称的配置文件
通过在application.yml中设置spring.profiles.active=dev/prod/test,决定环境的使用,active属于profiles下的一个属性,不能写成同一目录
#运行环境设置
spring:
profiles:
active: prod
Spring Boot日志文件
日志是程序不可或缺的一部分,在程序报错时可以定位问题,同时还能够记录需要的信息,接下来我会通过三个问题来介绍日志的使用
1.输出自定义日志
2.将日志持久化
3.通过设置日志的级别来筛选和控制日志的内容
自定义日志打印
日志格式说明
开发者自定义日志打印过程
1.得到日志对象
private static Logger logger= LoggerFactory.getLogger(TestController.class);
注意:Logger 对象是属于 org.slf4j 包下的,不要导⼊错包
Spring Boot 中内置了日志框架 Slf4j,所以咱们可以直接在程序中调用 slf4j 来输出日志
2.使用日志对象提供的方法,输出自定义的日志内容
日志打印方法有很多这里通过info()方法输出日志
日志持久化
1.设置日志的名称
#设置日志的保存名称
logging:
file:
name: springboot.log
注意:日志不会丢失,会一直追加,当日志文件比较大的时候会自动分割,分割为多个文件
2.设置日志的保存路径
logging:
file:
path: C:\work\
默认日志文件名为spring.log
日志级别分类和使用
日志的优先级
日志的优先级为: trace(微量) debug(调试时打印信息) info(默认) warn(警告) error(报错) fatal(致命的,代码异常导致程序退出)
日志的级别设置
日志级别配置只需要在配置文件中设置"logging.level"配置项即可
更简单的日志输出
在上面的学习中我们需要先拿到日志对象也就是需要在类中LoggerFactory.getLogger(xxx.class)
比较麻烦如何高效的输出呢,这里就需要使用lombok
1.添加lombok框架
在pom.xml中添加依赖,或者使用插件EditStarters添加框架支持
2.使用@slf4j注解输出日志
注意:在使用@slf4j注解,程序需要使用log对象才能输入输出日志对象,这是lombok提供的对象名