SpringBoot01_快速开发
一、SpringBoot 简介
(一)什么是 SpringBoot
Spring Boot 是一个基于 Spring 框架的快速开发应用程序的工具。它提供了一种简单的方式来配置和构建 Spring 应用程序,并集成了大量常用的第三方库,使得开发者可以更容易地搭建、测试和部署应用程序。Spring Boot 还提供了许多便捷的特性,如自动配置、热部署等,大大提高了开发效率和开发体验。
Spring Boot的目标不在于为已解决的问题域提供新的解决方案,而是 为平台带来另一种开发体验,从而简化对这些已有技术的使用。
(二)为什么使用 SpringBoot
1.Spring Boot是为简化Spring项目配置而生,使用它使得jar依赖管理 以及应用编译和部署更为简单。Spring Boot提供自动化配置,使用 Spring Boot,你只需编写必要的代码和配置必须的属性。
2.使用Spring Boot,只需20行左右的代码即可生成一个基本的Spring Web应用,并且内置了tomcat,构建的fat Jar包通过java -jar就可以 直接运行。
3.Spring Boot非常契合微服务的概念,可以结合Spring Boot与Spring Cloud和Docker技术来构建微服务并部署到云端:一个可执行jar即为一个独立服务、容易加载到容器,每个服务可以在自己的容器(例如docker)中运行、通过一个脚本就可以实现配置与部署,很适合云端部署,并且自动扩展也更容易。
(三)SpringBoot 的特性
1.无需手动管理依赖jar包的版本
Spring-boot-*的jar包已对一些功能性jar包进行了集成。当这些技术的 starter pom 被选中后,与这项技术相关的 Spring 的 Bean 将会被自动配置。
starter | 集成功能 |
---|---|
spring-boot-starter | 核心Spring Boot starter,包括自动配置支持,日志和YAML |
spring-boot-starter-actuator | 生产准备的特性,用于帮你监控和管理应用 |
·spring-boot-starter-web | 对全栈web开发的支持,包括Tomcat和 spring-webmvc |
spring-boot-starter-aop | 对面向切面编程的支持,包括 spring-aop和AspectJ |
spring-boot-starter-jdbc | 对JDBC数据库的支持 |
·spring-boot-starter-security | 对 spring-security 的支持 |
2.独立运行的Spring项目
Spring Boot默认将应用打包成一个可执行的jar包文件,构建成功后使用 java -jar命令即可运行应用,不需要依赖tomcat、jetty等外部的应用服务器。
3.自动配置,无需xml
Spring Boot尝试根据你添加的jar依赖自动配置你的应用。
4.外部化配置
Spring Boot可以使用properties文件,YAML文件,环境变量,命令行 参数等来外部化配置。属性值可以使用@Value注解直接注入到bean中, 并通过Spring的Environment抽象或经过@ConfigurationProperties注 解绑定到结构化对象来访问。
5.嵌入式servlet容器
Spring Boot的web模块内置嵌入的Tomcat, Jetty, Undertow来构建自 包含的Servlet容器。web应用打包成可执行jar包时,相应的servlet 容 器也会被嵌入到应用jar中。并且servlets, filters和listeners都可以通过 声明为bean来被容器注册。
6.开启devtools特性
热部署。
二、搭建一个 SpringBoot 入门程序
(一)快速上手
可以在 Spring 官网上快速新建一个 SpringBoot 项目并下载到本地,同时 InteljiIDEA 同样继承了此功能。
在下面的服务器 URL 中可以自己更换,这里使用的是 Spring 官网上的,如果无法加载,可以自行换为阿里云。
在下方黄色框中区域可选择 SpringBoot 版本,推荐使用2.7,需要注意不同的 JDK 版本对于 SpringBoot 的支持是不同的。
新建好的 SpringBoot 项目结构如下:
(二)项目入口和自定义 Controller
默认生成的带有注解 @SpringBootApplication 的类就是 SpringBoot 工程的引导类。
package com.qlu.springboot01;
@SpringBootApplication
public class Springboot01Application {
public static void main(String[] args) {
SpringApplication.run(Springboot01Application.class, args);
}
}
如果有需要也可以自己编写引导类
package com.qlu.springboot01;
@SpringBootApplication
public class Application {
public static void runServer(String[] args) {
SpringApplication.run(Application.class,args);
}
}
//——————————————————————————————————————————————————————————————————————————————————————————
package com.qlu.springboot01;
public class Springboot01Application {
public static void main(String[] args) {
Application.runServer(args);
}
}
带有 @SpringBootApplication 注解的就是 SpringBoot 的启动入口,编写 Controller 层进行测试,对于 SpringBoot 工程的约定,必须将各层的类编写在引导类所在的包以及子包下才会自动加载。
该使用 @RequestMapping 注解还是和以前一样,使用 @RestController 就相当于 @ResponseBody 和 @Controller 两个注解。
package com.qlu.springboot01.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/book")
public class BookController {
@RequestMapping("/t1")
public String t1 (String message){
System.out.println(message);
return message;
}
}
在以往的springMvc项目里,都是把打的war放在tomcat中运行,下意识的访问 ip:port/projectName/url,进行请求;而springboot不止提供了打成war放在容器里部署,一般是直接执行main函数来启动一个内置的服务器来处理请求,这时候访问默认是不需要添加项目名的,默认的context-path 是"/",加上项目名后会报404。
三、SpringBoot 热部署和配置文件
我们在开发中反复修改类、页面等资源,每次修改后都是需要重新启动才生效,这样每次启动都很麻烦,浪费时间,我们可以在修改代码后不重启就能生效,在 pom.xml 中添加如下配置就可以实现这样的功能,我们称之为热部署,不过这玩意经常不好用。
<!--热部署配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
修改启动图标
只需要在 resource 中新建一个 banner.txt 就可以替换掉原来的 Spring 图标。
四、properties配置文件
(一)配置文件
SpringBoot 的配置文件名称都是以 application 开头的,即 application.properties / application.yml 。
在新建 SpringBoot 项目时,会自动给生成一个 application.properties 文件,但是平常使用的最多的是 yml / yaml 文件。
理论上一个 SpringBoot 项目是可以同时出现 properties 文件和 yml 文件的,但是如果一个 Spring Boot 项目中真的同时使用了上述的两种配置文件,那么最终配置项就会以 " properies " 为主,从而忽略了 " yml "。
application.yml
server:
port: 8081
application.properties
server.port=8080
(二)配置多环境
可以使用单个 yml 配置多个环境,选择性激活某个,原理就和 mybatis 中的 environments
#application.yml 激活某个环境
spring:
profiles:
active: dev
#开发环境 dev application-dev.yml
server:
port: 8080
#测试环境 test application-test.yml
server:
port: 8081
#生产环境 pro application-pro.yml
server:
port: 8082
当然你也可以像在 mybatis 中一样把所有的 environment 写到一个配置文件中选择激活哪一个,不过实际可能环境没有那么简单,所以还是分开更清晰。
(三)修改 context-path
SpringBoot默认是 “/” ,这样直接通过http://ip:port/就可以访问到index页面,如果要修改为http://ip:port/path/访问的话,那么需要在 application 文件中加入server.context-path= /你的path。
#application-dev.yml
server:
port: 8080
servlet:
context-path: /springboot01