目录
Spring Boot介绍
Spring Boot是在Spring的基础之上产生的(确切的说是在Spring4.0的版本的基础之上),其中“Boot”的意思就是“引导”,意在简化开发模式,是开发者能够快速的开发出基于Spring的应用。Spring Boot含有一个内嵌的web容器。我们开发的web应用不需要作为war包部署到web容器中,而是作为一个jar包,在启动时根据web服务器的配置进行加载。
Spring Boot解决的问题
在Spring Boot诞生之前,我们在进行传统开发时,会在项目中存在大量的xml文件,配置是相当的繁琐。尤其是整合第三方框架时的配置更是头疼的问题。而且还降低了开发效率与部署效率等。Spring Boot就是为了解决此类问题而诞生。它的特点都是弥补传统的不足,有如下几点。
- 使配置简单
- 使编码简单
- 使部署简单
- 使监控简单
快速构建Spring Boot项目
访问Spring官网即可找到:SpringBoot官网
直接在Spring Boot的官网上构建,构建地址如下:官网快速构建SpringBoot项目(推荐使用这种方式,因为官网提供的构建方式,创建的项目结构是最标准的)同时在springboot选型上,我们需要留意一下。Spring Boot 2.0.0以下的版本,推荐使用JDK1.7。以上的版本,推荐使用JDK1.8及以上。
SpringBoot项目结构
SpringBoot也支持jsp、servlet项目开发,需要导入相关的jar包。static和templates目录,就如上图介绍的功能,但是在项目中使用的时候,一般还会配置拦截器使用,即静态资源拦截器。
配置页面前后缀
SpringBoot在设置模板路径和后缀上和SpringMvc框架有所不同,因为SpringBoot提倡无配置件话,所以这些配置要写在SpringBoot的配置文件application.yml或者application.properties中,以yml文件为例(以下为我的项目配置)
spring:
thymeleaf:
prefix: classpath:/templates/
suffix: .html
SpringBoot启动器
所谓的SpringBoot启动器其实就是一些jar包的集合,SpringBoot一共提供44个启动器(44个jar包)。
常见的:
- spring-boot-starter-web:支持全栈式的web开发,包括了tomcat和SpringMvc等jar。
- spring-boot-starter-jdbc:支持spring以jdbc方式操作数据库的jar包的集合。
- spring-boot-starter-redis:支持redis键值存储的数据库操作。
yml配置文件
是Spring Boot中新增的一种配置文件格式。特点:具备天然的树状结构。
yml配置文件与properties文件的区别
- 配置文件的扩展名有变化
- 配置文件中的语法有变化
yml配置文件的语法
- 在properties文件中是以“.”进行分割,在yml中使用“:”进行分割。
- yml的数据格式和json的格式很像,都是K-V结构的。并且是通过“:”赋值。
- 在yml中缩进一定不能使用TAB件,否则会报错。
- 每个Key的冒号后面一定要加一个空格。
修改内嵌容器的端口号
server:
port: 80
配置随机端口(使用Spring Cloud进行微服务开发的时候用到)
server.port=${random.int[1024,9999]}
logback日志记录
步骤
- 导入相关的jar包(web启动器中包含的有)
- 添加logback.xml配置文件(logback.xml)
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="${catalina.base}/logs/" />
<!-- 控制台输出 -->
<appender name="Stdout" class="ch.qos.logback.core.ConsoleAppender">
<!-- 日志输出编码 -->
<layout class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</layout>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/server.%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</layout>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 日志输出级别 -->
<root level="info">
<appender-ref ref="Stdout" />
<appender-ref ref="RollingFile" />
</root>
<!--日志异步到数据库 -->
<!-- <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
日志异步到数据库
<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
连接池
<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
<user>root</user>
<password>root</password>
</dataSource>
</connectionSource>
</appender> -->
</configuration>
Spring Boot的配置文件 - 多环境配置
语法结构:application-{profile}.properties。profile:代表的就是一个环境变量。
譬如:
application-dev.properties 开发环境
application-test.properteis 测试环境
application-prod.properteis 生产环境
运行项目时就用如下脚本:
java -jar xxx.jar --spring.profiles.active={profile}
例如:java -jar xxx.jar --spring.profiles.active= test|dev|prod
SpringBoot引导类
springboot项目需要一个引导类,并且这个引导类最好放在项目所有类目录的上一级目录下,因为springboot项目会自动扫描该类目录下所有子目录的类
常用到的注解: @SpringBootApplication 它表明该类是当前项目的引导类
package com.chenfu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @Author: romantic_ke@163.com
* @Description:
* @Date: 2019/5/30 15:06
*/
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
Spring Boot整合持久层案例
【PS:后台返回的都是JSON数据】
整合Mybatis框架
Spring Boot整合Mybatis的案例(包含传统Mybatis、通用Mapper(Tk Mybatis),在同一个项目的不同分支上):Spring Boot整合Mybatis框架
整合Spring Data JPA
Spring Boot整合Spring Data【包含Jpa,Redis,在同一个项目的不同分支上】:Spring Boot整合Spring Data