##Spring特点简介
- Spring Boot是由Pivotal团队提供的全新框架
- 目的是用来简化Spring应用的初始搭建以及开发过程。
- SpringBoot提供了大量的启动器,帮助开发人员大大简化了配置。
- 从最根本上来讲,Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用。
##SpringBoot主要特点
- 创建独立的Spring应用程序,是一个基于spring容器来启动的spring应用
- 嵌入的Tomcat,无需部署WAR文件
- 简化Maven配置
- 自动配置Spring,autoConfiguration的功能。可以简化spring的配置信息。
##SpringBoot的使用
SpringBoot是一些库的集合,所以具有其独特的使用方式,即定义本地工程,并继承SpringBoot提供的父工程,实现资源的依赖。
- SpringBoot的静态资源目录默认在src/main/resources/static下。
- SpringBoot的模板页面资源目录默认在src/main/resources/templates下
通过SpringBoot进行资源依赖的时候,都是依赖SpringBoot定义好的启动器,SpringBoot定义了44个启动器,诸如:spring-boot-starter-web、spring-boot-starter-jdbc、spring-boot-starter-test等。启动器中已经定义了完整的资源依赖信息,在工程中只要依赖少量的启动器,即可完成一个复杂工程的资源依赖。
spring-boot-starter-web启动器整合了Servlet技术。这个启动器包含一个Tomcat容器,可以通过SpringApplication来启动容器,提供WEB服务。这个容器的端口默认为8080,可以通过application.properties配置文件来修改端口。
<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
启动类代码
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
控制代码
package com.example.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.Date; import java.util.HashMap; import java.util.Map; @Controller public class DemoController { @RequestMapping("test") @ResponseBody public Object test(){ Map<String,Object> results=new HashMap<>(); results.put("name", "张三"); results.put("age", 20); results.put("date", new Date()); return results; } }
##SpringBoot 在IDEA中实现热部署
- 在项目添加热部署插件
温馨提示:如果因为项目十分臃肿庞大,导致热重启很慢而影响开发效率,建议直接在在POM移除spring-boot-devtools依赖,然后使用Control+Shift+F9进行免启动快速更新
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
- 开启IDEA的自动编译(静态)
打开顶部工具栏 File -> Settings -> Build, Execution, Development -> Compiler 然后勾选 Build project automatically
- 开启IDEA的热部署策略
具体步骤:顶部菜单- >Edit Configurations->SpringBoot插件->目标项目->勾选热更新
##SpringBoot的配置文件
- SpringBoot的配置文件默认放在src/resources/下
`server.port=8080`
- SpringBoot的配置文件有两种格式
a. application.properties (默认)
b. application.yml (更简洁)
server: port: 8080
配置不同环境下的配置文件
#application.yml中配置 spring: profiles: active: dev //那么application-dev.yml将生效 spring: profiles: active: mo //那么application-mo.yml将生效 spring: profiles: active: prod //那么application-prod.yml将生效
##附一个完整的配置文件
server: port: 80 servlet: session: timeout: 600 max-http-header-size: 8192 tomcat: uriEncoding: UTF-8 compression: enabled: true mime-types: application/json,application/xml,text/html,text/xml,text/plain spring: application: name: xxx http: encoding: force: true enabled: true charset: UTF-8 servlet: multipart: max-file-size: 200MB max-request-size: 200MB aop: proxy-target-class: true jmx: default-domain: ${spring.application.name}