目录
1. SpringBoot概述
- Spring 框架对于很多 Java 开发人员来说都不陌生。自从 2002 年发布以来,Spring 框架已经成为企业应用开发领域非常流行的基础框架。有大量的企业应用基于 Spring 框架来开发。Spring 框架包含几十个不同的子项目,涵盖应用开发的不同方面。如此多的子项目和组件,一方面方便了开发人员的使用,另外一个方面也带来了使用方面的问题。每个子项目都有一定的学习曲线。开发人员需要了解这些子项目和组件的具体细节,才能知道如何把这些子项目整合起来形成一个完整的解决方案。在如何使用这些组件上,并没有相关的最佳实践提供指导。对于新接触 Spring 框架的开发人员来说,并不知道如何更好的使用这些组件。Spring 框架的另外一个常见问题是要快速创建一个可以运行的应用比较麻烦。Spring Boot 是 Spring 框架的一个新的子项目,用于创建 Spring 4.0 项目。它的开发始于 2013 年。2014 年 4 月发布 1.0.0 版本。它可以自动配置 Spring 的各种组件,并不依赖代码生成和 XML 配置文件。Spring Boot 也提供了对于常见场景的推荐组件配置。Spring Boot 可以大大提升使用 Spring 框架时的开发效率。
1.1 简介
使用Spring boot ,可以轻松的创建独立运行的程序,非常容易构建独立的服务组件,是实现分布式架构、微服务架构利器。
Spring boot简化了第三方包的引用,通过提供的starter,简化了依赖包的配置。
1.2 Spring boot的优点
- 轻松创建独立的Spring应用程序。
- 内嵌Tomcat、jetty等web容器,不需要部署WAR文件。
- 提供一系列的“starter” 来简化的Maven配置,不需要添加很多依赖。
- 开箱即用,尽可能自动配置Spring。
1.3 Spring boot内置Servlet容器
2. SpringBoot入门案例
第一步:配置Maven
第二步:创建一个Maven项目
- 在idea中使用模板快速创建
第三步:在pom.xml添加spring-boot-starter-web依赖
<parent><!--SpringBoot的父依赖--><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version></parent><dependencies><!--SpringBoot配置web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
spring-boot-starter-parent作用:在pom.xml中引入spring-boot-start-parent,它可以提供dependency management(依赖管理),引入以后在申明其它dependency的时候就不需要version了,后面可以看到。
spring-boot-starter-web作用:springweb 核心组件
第四步:写个控制器,跑一下
package com.it.web.controller;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;/**
* @ClassName HelloController
* @Author shuyy
* @Date 2020/10/25
**/@RestController//相当于声明Controller,并提供restful风格@EnableAutoConfiguration//自动配置不需要写Spring配置文件publicclassHelloController{@RequestMapping("hello")//映射路径@ResponseBody//响应体public Stringhello(){return"Hello SpringBoot";}publicstaticvoidmain(String[] args){//启动程序(这里只是测试一下,以后一般不这样启动)
SpringApplication.run(HelloController.class,args);}}
- restful风格
3. SpringBoot的两种启动方式
第一种【不推荐使用】
- 在控制器配置EnableAutoConfiguration并使用SpringApplication启动程序【如果有多个Controller要怎么启动呢】
第二种【推荐使用】
- 创建一个App类,在App类中配置EnableAutoConfiguration和组件扫描ComponentScan,然后使用SpringApplication启动程序,这样就可以访问多个Controller了
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.context.annotation.ComponentScan;/**
* @ClassName App
* @Author shuyy
* @Date 2020/10/25
**/@EnableAutoConfiguration//只能写一个,这里配置了,其它Controller无需写了@ComponentScan(basePackages="com.it.web.controller")//配置扫描包//@ComponentScan(basePackages = {"com.it.web.controller",""})//配置多个扫描包publicclassApp{publicstaticvoidmain(String[] args){
SpringApplication.run(App.class,args);}}
- 再写一个UserController测试开启多个Controller
- 写一个User实体,提供有参、无参构造、get/set、toString
package com.it.web.controller;import com.it.model.User;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;/**
* @ClassName HelloController
* @Author shuyy
* @Date 2020/10/25
**/@RestController//相当于声明Controller,并提供restful风格//@EnableAutoConfiguration//自动配置不需要写Spring配置文件publicclassUserController{@RequestMapping("user/{id}")//映射路径【restful风格】@ResponseBody//响应体public UseruserInfo(@PathVariable Integer id){
User user=newUser("shu","123");
user.setId(id);return user;}/*public static void main(String[] args) {
//启动程序(这里只是测试一下,以后一般不这样启动)
SpringApplication.run(HelloController.class,args);
}*/}
- 运行
4. SpringBoot依赖介绍
spring-boot-starter | 核心 POM,包含自动配置支持、日志库和对 YAML 配置文件的支持 |
spring-boot-starter-amqp | 通过 spring-rabbit 支持 AMQP消息队列 |
spring-boot-starter-aop | 包含 spring-aop 和 AspectJ 来支持面向切面编程(AOP) |
spring-boot-starter-batch | 支持 Spring Batch,包含 HSQLDB批处理 |
spring-boot-starter-data-jpa | 包含 spring-data-jpa、spring-orm 和 Hibernate 来支持 JPA |
spring-boot-starter-data-mongodb | 包含 spring-data-mongodb 来支持 MongoDB |
spring-boot-starter-data-rest | 通过 spring-data-rest-webmvc 支持以 REST 方式暴露 Spring Data 仓库 |
spring-boot-starter-jdbc | 支持使用 JDBC 访问数据库 |
spring-boot-starter-security | 包含 spring-security安全 |
spring-boot-starter-test | 包含常用的测试所需的依赖,如 JUnit、Hamcrest、Mockito 和 spring-test 等 |
spring-boot-starter-velocity | 支持使用 Velocity 作为模板引擎 |
spring-boot-starter-web | 支持 Web 应用开发,包含 Tomcat 和 spring-mvc |
spring-boot-starter-websocket | 支持使用 Tomcat 开发 WebSocket 应用 |
spring-boot-starter-ws | 支持 Spring Web Services |
spring-boot-starter-actuator | 添加适用于生产环境的功能,如性能指标和监测等功能 |
spring-boot-starter-remote-shell | 添加远程 SSH 支持 |
spring-boot-starter-jetty | 使用 Jetty 而不是默认的 Tomcat 作为应用服务器 |
spring-boot-starter-log4j | 添加 Log4j 的支持 |
spring-boot-starter-logging | 使用 Spring Boot 默认的日志框架 Logback |
spring-boot-starter-tomcat | 使用 Spring Boot 默认的 Tomcat 作为应用服务器 |
spring-boot-starter-web
- POM 文件中可以看到,应用所声明的依赖很少
- 只有一个“org.springframework.boot:spring-boot-starter-web”
- 而不是像其他 Spring 项目一样需要声明很多的依赖。
- 当使用 Maven 命令“mvn dependency:tree”来查看项目实际的依赖时
- 发现其中包含SpringMVC框架、SLF4J、Jackson、Hibernate Validator 和 Tomcat 等依赖。
- 这实际上 Spring 推荐的 Web 应用中使用的开源库的组合。
- 树形结构
EnableAutoConfiguration
- EnableAutoConfiguration”注解的作用在于让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,这就减少了开发人员的工作量。
- Spring Boot 推荐采用基于 Java 注解的配置方式,而不是传统的 XML。只需要在主配置 Java 类上添加“@EnableAutoConfiguration”注解就可以启用自动配置。
- 注解“@RestController”和”@RequestMapping”由 Spring MVC 提供,用来创建 REST 服务。这两个注解和 Spring Boot 本身并没有关系。