文档
概念
Spring Boot
是Spring
生态的产品,Spring Framework
是一个容器框架, 同样是Spring
生态的产品Spring Boot
是Spring
提供的一个子项目,用于快速构建Spring应用程序Spring Boot
是一个开源的微服务框架,基于Spring
框架构建,旨在简化Spring
应用程序的初始搭建和开发过程Spring Boot
并不是Spring
功能上的增强,而是提供了一种快速使用Spring
的方式
设计原则
Spring Boot
的设计原则是“习惯优于配置”,它允许开发者通过默认配置快速启动项目,而不需要编写大量的XML配置文件。Spring Boot
提供了自动配置的功能,这意味着它可以根据项目依赖和类路径中的内容自动配置Spring应用程序。
核心注解
注解使得开发者可以更快速、更简洁地构建和部署应用程序,减少了样板式的代码,并提高了开发者的生产力。
1. @SpringBootApplication
- 等价于使用 @Configuration、@EnableAutoConfiguration、@ComponentScan 三个注解。
- 标记成SpringBoot应用
2. @SpringBootConfiguration
- 继承了
@Configuration
注解,表示该类使用 Spring 基于 Java 的配置机制。 - 标记成配置类
- @Configuration 这是 Spring 3.0 添加的一个注解,用来代替 applicationContext.xml 配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。
3. @EnableAutoConfiguration
- 启用 Spring Boot 的自动配置机制,它会尝试基于类路径设置、其他 bean 和各种属性文件设置自动配置的 bean。
- 类级别的注解,这个注解告诉 Spring Boot 根据添加的 jar 依赖猜测你想如何配置 Spring,也就是 Spring 实现自动配置的开关。
- 自动扫描,启动自动配置类的
4. @ComponentScan
- 启用组件扫描,这样你就可以通过注解 auto-detect 和 auto-configure Spring 容器中的 bean。
Spring Boot 还提供了其他的注解,例如
@RestController
、@Service
、@Repository
、@Component
、@Autowired
等,这些都是 Spring 框架的基础注解,用于定义 REST 控制器、服务、数据仓库和组件,并自动注入依赖。
特性
1. 起步依赖 解决配置繁琐问题
- spring-boot-starter-parent 核心pom,包含对自动配置、日志库、yaml配置文件的支持,所有springboot项目都需要继承。
- spring-boot-starter-web 对web开发的支持,内置的tomcat、springmvc的坐标、jackson的坐标
- spring-boot-starter-tomcat 使用内置的tomcat
- spring-boot-starter-jetty 使用内置的jetty
- spring-boot-starter-log4j 对log4j的支持
- spring-boot-starter-test 对测试的支持,包含了junit.jar、spring-test.jar等的坐标
- spring-boot-starter-jdbc 对jdbc的支持
- spring-boot-starter-data-mongodb 对mongondb的支持
- spring-boot-starter-velocity 对velocity模板引擎的支持
- spring-boot-starter-aop 对aop(Spring AOP、AspectJ)的支持
- spring-boot-starter-websocket 对websocket的支持
- spring-boot-starter-amqp 对AMQP消息队列的支持
Spring Boot起步依赖(Starter Dependency)是一种机制,它可以让你简单地将一组依赖添加到应用程序中。每个起步依赖都是一个专门解决特定问题的依赖集合,例如,
spring-boot-starter-web
用于创建具有Spring MVC的Web应用程序。 要在Spring Boot项目中添加起步依赖,你需要在项目的pom.xml
(如果你使用的是Maven)或build.gradle
(如果你使用的是Gradle)文件中添加相应的起步依赖。 以下是如何在Maven和Gradle中添加spring-boot-starter-web
的例子:Maven:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
Gradle:
dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' }
添加了起步依赖后,你可以开始构建你的应用程序,Spring Boot会自动配置所需的所有组件。
2. 自动配置
(1). 自动配好Tomcat
(2). 自动配好SpringMVC
- 引入SpringMVC全套组件
- 自动配置好SpringMVC常用组件功能,如:注册过滤器[字符编码问题],前端控制器,视图解析器,文件上传解析器,异常处理组件 ,拦截器等等。
SpringBoot帮我们配置好了所有web开发的常见场景
(3). 默认的包结构
-
在主程序下的所有包及其下面的所有子包里面的组件都会默认扫描进来,无需以前的包扫描配置。
-
如果需要改变默认扫描配置的两种方式:
方式一: 在@SpringBootApplication注解中的scanBasePackages属性设置扫描配置
@SpringBootApplication(scanBasePackages={"com.haikang"})
方式二: 使用另外的三个注解,代替@SpringBootApplication注解,并在@ComponentScan注解中指定扫描路径
@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan("com.haikang")
(4). 各种配置拥有默认值
- 默认配置最终都是映射到相关指定的类上,如:MultipartProperties文件上传默认配置类。
- 配置文件的值最终绑定指定类上,这个类会在容器中创建对象
(5). 按需要加载所有自动配置项
- 由于有非常多的starter,是引入了哪些场景这个场景的自动配置才会开户。
- SpringBoot所有的自动配置功能都在spring-boot-autoconfigure包里面
3. 其他特性
- 内嵌的
Tomcat
、Jetty
- 外部化配置
- 不需要XML配置(propertites/yml)
- 自带监控功能,可以监控应用程序的运行情况,或者内存、线程池、HTTP请求统计等,同时提供了优雅关闭应用程序的功能
优势
- 快速构建项目:Spring Boot提供了一个快速构建Spring应用程序的方法,通过提供一系列的"starters"(启动器),可以快速地将常用的库(如Spring MVC、Hibernate、MyBatis等)添加到项目中。
- 自动配置Spring:Spring Boot会根据类路径上的库和配置尝试自动配置Spring应用程序。这可以节省大量的配置时间和代码。
- 无需配置部署到生产环境:Spring Boot支持“零配置”或者“约定大于配置”的方法,这使得开发人员可以更快地将应用程序部署到生产环境。
- 提供生产级别的监控和管理工具:Spring Boot提供了actuator模块,可以用于监控和管理生产环境中的应用程序。
- 与云计算的天然集成:Spring Boot提供了一些模块,如Spring Cloud,可以帮助开发人员更容易地构建和部署微服务架构。
- 与各种开发工具和IDE的集成:Spring Boot支持包括IntelliJ IDEA、Eclipse、NetBeans等在内的多种开发工具和IDE。