SpringBoot项目简介及四大核心
1. 相关介绍
Spring Boot 是由 Pivotal 团队提供的全新框架,2014 年 4 月发布 Spring Boot 1.0 2018 年 3 月 Spring Boot 2.0发布。它是对spring的进一步封装,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。通过封装、抽象、提供默认配置等方式让我们更容易使用。
SpringBoot 基于 Spring 开发。SpringBoot 本身并不提供 Spring 框架的核心特性以及扩展功能,也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。
关于 SpringBoot 有一句很出名的话就是约定大于配置。采用 Spring Boot 可以大大的简化开发模式,它集成了大量常用的第三方库配置,所有你想集成的常用框架,它都有对应的组件支持,例如 Redis、MongoDB、Jpa、kafka,Hakira 等等。SpringBoot 应用中这些第三方库几乎可以零配置地开箱即用,大部分的 SpringBoot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。
Springboot:spring全家桶技术之一,几乎所有 javaWeb 编程都会使用这个框架。它是集成框架。它能简化之前采用 SpringMVC+ Spring + Mybayis 框架进行开发的过程。—简化开发(主要是简化配置),提高开发效率。
用Spring Boot可以非常容易和快速地创建基于Spring框架的应用程序,它让编码变简单了,配置变简单了,部署变简单了,监控变简单了。正因为 Spring Boot 它化繁为简,让开发变得极其简单和快速。
2. 特点
Spring Boot所具备的特征有:
(1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
(2)内嵌Tomcat或Jetty等Servlet容器;
(3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
(4)尽可能自动配置Spring容器;
(5)提供准备好的特性,如指标、健康检查和外部化配置;
(6)绝对没有代码生成,不需要XML配置。
3. Spring Boot四大核心
-
自动配置:针对很多Spring应用程序和常见的应用功能,Spring Boot能自动提供相关配置
-
起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的依赖库
-
Actuactor: Actuator是来管理和监控应用,Actuator是一个用于暴露自身信息的模块,可以有效地减少监控系统在采集应用指标时的开发量。
-
命令行界面:这是Spring Boot的可选特性,借此只需要写代码就能完成完整的应用程序,无需传统项目构建。
3.1 自动配置
Spring Boot自动装配原理是通过条件注解和Spring的条件化配置机制实现的。在启动应用程序时,Spring Boot会扫描classpath下的所有类,并根据条件注解来判断哪些类需要被自动装配。条件注解包括@ConditionalOnClass、@ConditionalOnMissingBean、@ConditionalOnProperty等。这些注解可以根据类的存在、Bean的存在、属性的值等条件来判断是否需要自动装配。如果满足条件,Spring Boot会自动创建Bean并注入到容器中,从而实现自动装配的功能。
3.2 起步依赖
起步依赖有很多类型,它们都以spring-boot-starter-XXX
的形式命名。例如,spring-boot-starter-web
用于Web应用开发,spring-boot-starter-thymeleaf
用于导入thymeleaf模板引擎正常运行所依赖的组件。
使用SpringBoot起步依赖非常简单,只需要在项目的pom文件中添加相应的依赖即可。例如,如果你想开发一个Web应用,你可以在pom文件中添加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
SpringBoot起步依赖的优点在于它可以帮助开发人员快速配置项目所需的依赖,避免了手动添加大量依赖的繁琐过程。此外,由于SpringBoot起步依赖中包含的依赖版本都是经过实践验证的可用版本,因此可以避免版本冲突等问题。
3.3 Actuactor
Spring Boot Actuator 的关键特性是在应用程序里提供众多 Web 接口,通过它们了解应用程序运行时的内部状况。Actuator 提供了 13 个接口,可以分为三大类:配置接口、度量接口和其它接口,具体如下表所示。
HTTP 方法 | 路径 | 描述 |
---|---|---|
GET | /autoconfig | 提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过 |
GET | /configprops | 描述配置属性(包含默认值)如何注入Bean |
GET | /beans | 描述应用程序上下文里全部的Bean,以及它们的关系 |
GET | /dump | 获取线程活动的快照 |
GET | /env | 获取全部环境属性 |
GET | /env/{name} | 根据名称获取特定的环境属性值 |
GET | /health | 报告应用程序的健康指标,这些值由HealthIndicator的实现类提供 |
GET | /info | 获取应用程序的定制信息,这些信息由info打头的属性提供 |
GET | /mappings | 获取应用程序的定制信息,这些信息由info打头的属性提供 |
GET | /metrics | 获取应用程序的定制信息,这些信息由info打头的属性提供 |
GET | /metrics/{name} | 报告指定名称的应用程序度量值 |
POST | /shutdown | 关闭应用程序,要求endpoints.shutdown.enabled设置为true |
GET | /trace | 提供基本的HTTP请求跟踪信息(时间戳、HTTP头等) |
3.3.1 使用简介
Actuator 的使用需要引入相应的依赖,如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
默认情况下 jmx是所有端点都暴露了, 而 http 方式只有 info 和 health 能用,我们可以通过如下配置来选择是否暴露其他端点。
属性 | 意义 | 默认值 |
---|---|---|
management.endpoints.jmx.exposure.exclude | 暴露排除某些端点 | |
management.endpoints.jmx.exposure.include | 暴露某些端点 | * |
management.endpoints.web.exposure.exclude | 暴露排除某些端点 | |
management.endpoints.web.exposure.include | 暴露某些端点 | info, health |
如:在 Springboot 中我们可以通过如下配置开发所有端点或指定端点:
# actuator 监控配置
management:
#actuator端口 如果不配置做默认使用上面8080端口
server:
port: 8080
endpoints:
web:
exposure:
#默认值访问health,info端点 用*可以包含全部端点
include: "*"
#修改访问路径 2.0之前默认是/; 2.0默认是/actuator可以通过这个属性值修改
base-path: /actuator
endpoint:
shutdown:
enabled: true #打开shutdown端点
health:
show-details: always #获得健康检查中所有指标的详细信息
当服务启动后,我们可以通过 http://{ip}:{port}/{context-path}/actuator 来获取 actuator 的接口。(默认情况下,端点的访问根路径是 actuator,我们可以通过 management.endpoints.base-path 配置来配置访问路径)。
3.4 命令行界面
Spring boot CLI是运行spring boot命令的命令行界面。Spring boot CLI应用程序使用groovy语言,通过这种方式,我们用最少的代码行创建我们的应用程序并启动它。
3.4.1 安装 Spring Boot CLI
要使用Spring boot CLI,首先我们需要在系统中安装它。有很多方法可以安装Spring boot CLI。
- 手动安装
- 使用SDKMAN进行安装!
- OSX自制软件的安装
- MacPorts的安装
- 命令行完成
步骤1:使用以下链接下载Spring boot CLI
http://repo.spring.io/release/org/springframework/boot/spring-boot-cli/1.4.3.RELEASE/spring-boot-cli-1.4.3.RELEASE-bin.zip
步骤2:解压缩并保存在你系统的某个地方。
C:\spring-1.4.3.RELEASE
现在我们需要在我们的系统中设置以下环境变量。
- SPRING_HOME的值为
C:\spring-1.4.3.RELEASE
- PATH的值为
C:\spring-1.4.3.RELEASE\bin
步骤3:现在我们将测试我们的安装。打开命令提示符并键入命令spring --help,我们将得到以下结果。
C:\Users\Administrator\Desktop>spring --help
usage: spring [--help] [--version]
<command> [<args>]
Available commands are:
run [options] <files> [--] [args]
Run a spring groovy script
grab
Download a spring groovy script's dependencies to ./repository
jar [options] <jar-name> <files>
Create a self-contained executable jar filefrom a Spring Groovy script
war [options] <war-name> <files>
Create a self-contained executable war filefrom a Spring Groovy script
install[options] <coordinates>
Install dependencies to the lib/ext directory
uninstall [options] <coordinates>
Uninstall dependencies from the lib /ext directory
init [options] [location]
Initialize a new project using Spring Initializr (start.spring.io)
encodepassword [options] <password to encode>
Encode a password for use with Spring Security
shell
Start a nested shell
Common options:
--debug Verbose mode
Print additional status information for the command you are running
See 'spring help <command>' for more information on a specific command.
查找更多Spring boot CLI命令。
spring version
: 提供Spring boot CLI的版本。
创建一个简单的项目。实例:
spring init --build=maven --java-version=1.8 --dependencies=web
--packaging=jar --boot-version=1.5.7.RELEASE
--groupId=com.bjwl.demo --artifactId=demo