简介
- 微框架,与 Spring4 一起诞生,比如 @RestController。
- 可以快速上手,整合了一些子项目(开源框架或者第三方开源库)。
- 可以依赖很少的配置就可以十分快速的搭建并运行项目。
- 完全注解化,简化 XML 配置,不需要 web.xml 文件,内置嵌入 HTTP 服务器。
Spring Boot 特点
- 基于 Spring,使开发者快速上手,门槛低(Spring 全家桶)。
- Spring Boot 可以创建独立运行的应用而不依赖容器。
- 不需要打包成 war 包,可以放入 Tomcat 中直接运行。
- 提供 Maven 极简配置,但会引入许多不需要的包。
- 根据项目来依赖,从而配置 Spring,需要什么配什么。
- 提供可视化的相关功能,方便监控,比如性能、应用的健康程度等。
- 简化了配置,不用再看过多的 XML。
- 为微服务 Spring Cloud 铺路,Spring Boot 可以整合各式各样的框架来构建为服务,比如 Dubbo、Thrift 等。
Spring Boot 使用场景
- 有 Spring 的地方都行
- J2EE/Web 项目
- 微服务
Spring Boot Starter
Spring Boot Starter 它包含了一系列可以集成到应用里面的依赖包,可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。Spring Boot 官方的启动器都是以 spring-boot-starter-xxx 命名的,代表了一个特定的应用类型。下面是一些 Spring Boot 常用的依赖模块。
- spring-boot-starter-logging:使用 Spring Boot 默认的日志框架 Logback。
- spring-boot-starter-log4j:添加 Log4j 的支持。
- spring-boot-starter-web:支持 Web 应用开发,包含 Tomcat 和 spring-mvc。
- spring-boot-starter-tomcat:使用 Spring Boot 默认的 Tomcat 作为应用服务器。
- spring-boot-starter-jetty:使用 Jetty 而不是默认的 Tomcat 作为应用服务器。
- spring-boot-starter-test:包含常用的测试所需的依赖,如 JUnit、Hamcrest、Mockito 和 spring-test 等。
- spring-boot-starter-aop:包含 spring-aop 和 AspectJ 来支持面向切面编程 (AOP)。
- spring-boot-starter-security:包含 spring-security。
- spring-boot-starter-jdbc:支持使用 JDBC 访问数据库。
- spring-boot-starter-redis:支持使用 Redis。
- spring-boot-starter-data-mongodb:包含 spring-data-mongodb 来支持 MongoDB。
- spring-boot-starter-data-jpa:包含 spring-data-jpa、spring-orm 和 Hibernate 来支持 JPA。
- spring-boot-starter-amqp:通过 spring-rabbit 支持 AMQP。
- spring-boot-starter-actuator:添加适用于生产环境的功能,如性能指标和监测等功能。
Spring Boot & Spring Cloud
Spring Boot 其实是一个快速开发框架,能够帮助我们快速整合第三方常用框架,完全采用注解化,简化 XML 配置,最终以 Java 应用程序进行执行。
Spring Cloud 目前是一套完整微服务解决框架,功能强大。如:注册中心,客户端调用工具,服务治理(负载均衡、断路器、分布式配置中心)。
Spring Boot 的 Web组件默认集成 Spring MVC;Spring Cloud 依赖于Spring Boot 实现微服务,使用 Spring MVC 编写微服务接口。
注意
Spring Boot 只是一个快速开发框架,不是微服务框架!
Spring Boot + Spring Cloud 实现微服务开发!(RPC 远程通讯技术)
Spring Boot 初体验
快速搭建
借助 Spring 官网:https://start.spring.io/ 进行快速搭建。
点击 Generate,然后就会有一个 zip 包下载到本地,进行解压,导入到 IDE 即可开发。
手动搭建
- 创建一个 POM 文件。
1 |
|
2 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
3 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |
4 | <modelVersion>4.0.0</modelVersion> |
5 | <parent> |
6 | <groupId>org.springframework.boot</groupId> |
7 | <artifactId>spring-boot-starter-parent</artifactId> |
8 | <version>2.0.4.RELEASE</version> |
9 | <relativePath/> |
10 | </parent> |
11 | <groupId>com.example</groupId> |
12 | <artifactId>demo</artifactId> |
13 | <version>0.0.1-SNAPSHOT</version> |
14 | <name>hello</name> |
15 | <description>Demo project for Spring Boot</description> |
16 | |
17 | <properties> |
18 | <java.version>1.8</java.version> |
19 | </properties> |
20 | |
21 | <dependencies> |
22 | <dependency> |
23 | <groupId>org.springframework.boot</groupId> |
24 | <artifactId>spring-boot-starter</artifactId> |
25 | </dependency> |
26 | <dependency> |
27 | <groupId>org.springframework.boot</groupId> |
28 | <artifactId>spring-boot-starter-test</artifactId> |
29 | <scope>test</scope> |
30 | </dependency> |
31 | </dependencies> |
32 | |
33 | <build> |
34 | <plugins> |
35 | <plugin> |
36 | <groupId>org.springframework.boot</groupId> |
37 | <artifactId>spring-boot-maven-plugin</artifactId> |
38 | </plugin> |
39 | </plugins> |
40 | </build> |
41 | |
42 | </project> |
这里引入 spring-boot-maven-plugin
插件是为了在使用 mvn package
打包时,会生成一个直接可以运行的 JAR 包文件,使用 java -jar
命令可以直接运行。
- 创建 Spring Boot 应用主类
使用注解 @SpringBootApplication
标记该类,让 Spring Boot 自动给程序进行配置。
1 |
|
2 | public class HelloApplication { |
3 | |
4 | public static void main(String[] args) throws Exception { |
5 | |
6 | SpringApplication.run(ApplicationDemo.class, args); |
7 | } |
8 | } |
- 搭建 Web 工程
在 POM 文件中引入 spring-boot-starter-web
依赖,使程序支持 Web 应用开发。
1 | <dependency> |
2 | <groupId>org.springframework.boot</groupId> |
3 | <artifactId>spring-boot-starter-web</artifactId> |
4 | </dependency> |
- 创建 API
1 |
|
2 | "/api") ( |
3 | public class HelloWorldResource { |
4 | |
5 | "/hello") ( |
6 | public ResponseEntity<String> helloWorld() { |
7 | String message = "Hello World!"; |
8 | return ResponseEntity.ok(message); |
9 | } |
10 | } |