1.简介:
springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。在以往我们通过SpringMVC+Spring+Mybatis框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,然后整合在一起,而springboot抛弃了繁琐的xml配置过程,采用大量默认的配置来简化我们的spring开发过程。
2.特性:
1. 能够快速创建基于spring的程序
2. 能够直接使用Java main方法启动内嵌的Tomcat服务器运行springboot程序,不需要部 署war包
3. 提供约定的starter POM来简化Maven配置,让Maven的配置变得简单
4. 自动化配置,根据项目的Maven依赖配置,springboot自动配置spring、springmvc等
提供了程序的健康检查功能
5. 基本可以完全不使用xml配合文件,采用注解配置
3.springboot 四大核心:
自动配置、起步依赖、Actuator、命令行界面
4.SpringBoot入门案例:
(1)创建一个 Module,选择类型为Spring Initializr 快速构建
(2)设置 GAV 坐标及 pom 配置信息
(3)选择 Spring Boot 版本及依赖
(4)设置模块名称、Content Root (内容根目录) 路径及模块文件的目录,然后点击finish即可
(5)项目结构如下:多余的可以删除
static:存放静态资源。如图片、CSS、JavaScript 等 。
templates:存放 Web 页面的模板文件 。
application.properties或application.yml 用于存放程序的各种依赖模块的配置信息,比如服务端口,数据库连接配置等。
Application.java:SpringBoot 程序执行的入口,执行该程序中的 main 方法,启动当前SpringBoot项目。
(6)对pom.xml文件进行解释
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--maven 项目名称,可以删除-->
<modelVersion>4.0.0</modelVersion>
<!--当前项目的坐标以及版本-->
<groupId>com.demo.springboot</groupId>
<artifactId>001-demo-first</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- springboot 启动时依赖的父工程,所有自己开发的 SpringBoot 都必须的继承 --
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<!--项目编码和jdk版本号-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- web支持: 1、web mvc; 2、restful; 3、tomcat支持;
-SpringBoot 框架 web 项目起步依赖,通过该依赖自动关联其它依赖,
不需要我们一个一个去添加
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 热启动配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- 单元测试 -->
<!--SpringBoot 框架的测试起步依赖,例如:junit 测试,如果不需要的话可以删除-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 运行jar包插件 -->
<!--在cmd中输入: java -jar E:\maven\repository\com\bw\spring-boot\spring-boot\0.0.1-SNAPSHOT\spring-boot-0.0.1-SNAPSHOT.jar -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
5.创建一个SpringBootController
(1)创建SpringBootController 类
注意:新创建的类一定要位于 Application 同级目录或者下级目录,
否则SpringBoot 加载不到。
如图:
controller类:
package com.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(){
return "hello,world";
}
}
Application启动类:
package com.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Hello world!
*
*/
@SpringBootApplication
public class Application {
public static void main( String[] args ) {
SpringApplication.run(Application.class,args);
System.out.println( "Hello World!" );
}
}
启动后访问页面:
6.Springboot 分析:
(1)spring-boot-starter-parent 是一个 Springboot 的父级依赖,开发 SpringBoot 程序都需要继承该父级项目,它用来提供相关的 Maven 默认依赖,使用它之后,常用的 jar
包依赖可以省去 version 配置 。
(2)Spring Boot 提供了一些默认的jar 包的依赖,可查看该父级依赖的 pom 文件 。
(3)如果不想使用某个默认的依赖版本,可以通过 pom.xml 文件的属性配置覆盖各个
依赖项,比如覆盖 Spring 版本:<properties>
<spring-framework.version>5.0.0.RELEASE</ spring-framework.version >
</properties>
(4) @SpringBootApplication 注解是 Spring Boot 项目的核心注解,主要作用是开启
Spring 自动配置,如果在 Application 类上去掉该注解,那么不会启动 SpringBoot程序 。
(5)main 方法是一个标准的 Java 程序的 main 方法,是boot项目启动运行的入口。
(6)@Controller 及 @ResponseBody 依然是我们之前的 Spring MVC,因为 Spring Boot的里面依然是使用我们的 SpringMVC + Spring + MyBatis 等框架 。
7.核心配置文件:.properties、.yml、
(1). 例如:application.properties:
#设置内嵌 Tomcat 端口号:
server.port=9090
#设置项目上下文根:
server.servlet.context-path=/springboot
(2)例如:application.yml :
yml 是一种 yaml 格式的配置文件,主要采用一定的空格、换行等格式排版进行配置。它能够直观的被计算机识别数据序列化格式,容易被人类阅读,yaml 类似于 xml,但是语法比 xml 简洁很多,值与前面的冒号配置项必须要有一个空格, yml 后缀也可以使用 yaml 后缀 。
(3)多环境配置(.properties方式)
在实际开发的过程中,我们的项目会经历很多的阶段(开发->测试->上线),每个阶段
的配置也会不同,例如:端口、上下文根、数据库等,那么这个时候为了方便在不同的环境
之间切换,SpringBoot 提供了多环境配置
注意:当两种格式配置文件同时存在时,使用的是.properties 配置文件。
为每个环境创建一个配置文件,命名必须为 application-环境标识 .properties或 .yml
开发环境:application-dev.properties
#开发环境
#设置内嵌 Tomcat 默认端口号
server.port=8080
#设置项目的上下文根
server.servlet.context-path=/005-springboot-multi-environment-dev
生产环境:application-product.properties
#生产环境
#配置内嵌 Tomcat 默认端口号
server.port=80
#配置项目上下文根
server.servlet.context-path=/005-springboot-multi-environment-product
测试 环境 :application-test.properties
#测试环境
#配置内嵌 Tomcat 端口号
server.port=8081
#配置项目的上下文根
server.servlet.context-path=/005-springboot-multi-environment-test
在总配置文件 application.properties 进行环境的激活
#springboot 总配置文件
#激活开发环境
#spring:
# profiles:
# active: dev
#激活测试环境
#spring:
# profiles:
# active: test
#激活生产环境
spring:
profiles:
active: product
8.使用thymeleaf模板引擎
(1). 导入thymeleaf依赖即可:
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-java8time</artifactId>
</dependency>
(2).在thymeleaf包下创建一个html页面
注意:需要添加thymeleaf的命名空间才能使用:
xmlns:th="http://www.thymeleaf.org"
(3)thymeleaf的语法:
常用th命令:
方法 描述
th:id 替换标签id属性
th:text 替换标签文本
th:utext 支持html的文本替换
th:object 替换为对象,标签内可直接引用该对象属性示例
th:value 替换标签value属性
th:with 赋值为局部变量
th:style 替换标签style属性,设置样式
th:onclick 添加点击事件
th:each 集合,数组循环遍历 示例
th:if 条件判断,为true时渲染该标签示例
th:unless 条件判断,为false时渲染该标签 示例
th:href 替换标签href属性
th:switch 多路选择,与th:case配合使用 示例
th:case th:switch的一个分支 示例
th:selected 为true时selected选择框选中
th:src 替换标签src属性
th:inline 定义js脚本可以使用变量
th:action 替换提交表单的地址
th:remove 删除某个属性 示例
th:attr 设置标签属性,多个属性可以用逗号分隔
th:fragment 布局标签,定义一个代码片段,方便其它地方引用 示例
th:assert 与th:fragment连用,用于参数验证 示例
th:include 布局标签,替换内容到引入的文件,Thymeleaf 3.0 之后不推荐使用 示例
th:insert 布局标签,替换内容到引入的文件 示例
th:replace 布局标签,替换整个标签到引入的文件 示例
th:block 空标签 示例
th:alt-title 替换img标签alt与title属性
th:attr 添加多个属性及属性值 示例
th:attrappend 已有属性值追加 示例
th:classappend 已有class属性值追加 示例
th:inline 设置内联 示例
(2) 常用变量获取方式方法 描述
${…} 变量表达式,用于变量的获取
@{…} 链接表达式,一般和 th:href、th:src进行结合使用 示例
#{…} 消息表达式,用于从国际化文件中取值
~{…} 代码块表达式,一般和模版布局的语法一起使用 示例
*{…} 选择变量表达式,与th:object连用
[[${…}]] 在页面上直接输出变量,常用于js中获取变量
${${key}} 预处理,把${key}获取的值作为外层变量的key
实例:
(1) 提取变量
通过 th:object 获取一个对象,子标签元素可通过*{变量}获取变量值
<div th:object="${user}">
<div th:text="*{name}"></div>
</div>
(2) 遍历
遍历list为多个div标签,item为遍历出的对象,stat为遍历的状态对象<a href="#stat"></a>
<div th:each="item,stat: ${list}">
<span th:text="${item}"></span>
<span th:text="${stat.index}"></span>
</div>
(3) 条件
<span th:if="${number} == 24">为true显示</span>
<span th:unless ="${number} == 24">为false显示</span>
(4) 多路选择
th:case="*"表示其他情况,放在最后
<div th:switch="${number}">
<p th:case="'12'">number为12时显示</p>
<p th:case="'24'">number为24时显示</p>
<p th:case="*">其他时显示</p>
</div>
(5) 支持方法调用
获取变量字符串值的长度
<div th:text="${name.length()}"></div>
调用Date对象的getTime()
<span th:text="${date.getTime()}"></span>
(7) 运算符
显示数字除6的余数值
<div th:text="${number}%6"></div>
布尔类型取反
<span th:text="not (${number} >13)"></span>
显示数字是否为2的布尔值
<div th:text="${number} eq 2"></div>
三元运算符,number为2显示是,否则显示否
<div th:text="${number} eq 2 ?'是':'否'"></div>
设置默认值,number为null时显示0
<div th:text="${number} ?: 0 "></div>