百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

springcloud实战:springboot的核心原理

liuian 2025-01-26 23:19 33 浏览

Spring Boot核心原理

通过上篇的学习,读者应该对Spring Boot有了一个大致的认识,利用Spring Boot可以极大地简化应用程序的开发,这都归功于Spring Boot的四大核心原理:起步依赖、自动配置、Actuator和Spring Boot命令行。

本篇中,我们将深入探讨Spring Boot 的核心原理,以便读者能更好地学习和使用Spring Boot。

起步依赖机制

我们在使用Spring Boot搭建框架时,使用最频繁的特性就是起步依赖。所谓起步依赖,其本质是Maven项目的对象模型,通过传递依赖,我们很容易集成第三方框架。

起步依赖最明显的特征就是它的名称中包含starter,比如要集成Spring MVC 时,只需要添加spring-boot-starter-web 依赖即可。通过它的名称就可以看出,该依赖主要用于提供 Web支持。如果你曾使用过原生的Spring MVC框架,应该知道,我们需要添加很多依赖包才能正确集成SpringMVC。而在Spring Boot 中,我们无须添加这些依赖,因为Spring MVC的所有依赖包都包含在spring-boot-starter-web 中。

起步依赖还有一个好处,那就是版本管理。往常如果我们要集成一个第三方框架,需要知道它的版本号以及Maven如何依赖它,如果该第三方框架升级,还需要手动修改版本号并考虑是否存在版本冲突等问题。而通过添加 spring-boot-starter依赖,这一切都迎刃而解了。

Spring Boot的起步依赖的原则是,所有正式的启动程序都应遵循spring-boot-starter-*的命名格式。许多IDE中的 Maven集成允许按名称搜索依赖项。例如,安装了适当的Eclipse或STS插件后,你可以在POM Editor按下“Ctrl+空格”组合键,然后键入spring boot starter获得完整的框架列表。SpringBoot 官方集成了目前最流行的大多数应用程序框架,当我们希望集成某种功能时,只需要在官网( https://spring.io)或IDE中搜索对应依赖项并导入到应用即可。

图3-1列举了Spring Boot官方集成的一些第三方框架。

当然,如果我们在使用某种功能时,官方没有对应的starter依赖,也可以自定义starter满足需求。注意,我们在自定义时,命名通常以项目名开始,而不应该以spring-boot开始,因为它是为官方的SpringBoot构建而保留的。例如名为thirdpartyproject 的第三方启动程序项目通常命名为
thirdpartyproject-spring-boot-starter。

Spring Boot起步依赖的核心思想其实就是依赖传递。如果我们需要自定义starter依赖,只需要按照官方对starter 的命名规则创建一个工程,然后将我们期望的依赖包添加进工程并发布到本地仓库或服务器上的 Maven私服即可。这样我们在应用中只需依赖自定义的starter 即可。

自动配置管理

Spring Boot 另一个非常强大的特性就是自动配置管理,通过该特性,我们可以在程序启动时向Spring容器中导入很多配置信息。在传统的Spring MVC架构中,我们一般通过烦琐的XML文件导入配置或注入 Bean;而在 Spring Boot中,这一切都将成为历史。

其实在第2章中,我们已经接触到了它。当创建一个Spring Boot应用时,都会提供一个启动类,该类添加了@SpringBootApplication注解,注解内部包含了@EnableAutoConfiguration注解,它便是Spring Boot的自动配置管理器。通过添加@EnableAutoConfiguration注解,可以自动加载配置信息。

以端口设置为例,我们在application.yml中通过server.port 定义好端口后,Spring Boot应用启动时就会设置为该端口号,那么它是如何实现的呢?其实,application.yml中的所有配置文件最终都会转化为实体类。Spring Boot 会将配置属性的实体类的名称以Properties结尾,放在
org.springframework.boot.autoconfigure包下。server. port对应的实体类就是ServerProperties,其源码如下:

该类首先加入了@ConfigurationProperties注解,其作用就是定义配置属性,其中 prefix是属性前缀,这里为server。因此,server. port对应的就是ServerProperties类的 port字段,在程序启动时,Spring Boot配置管理器会自动将server. port装载到ServerProperties类的port字段中。

通过这种方式,我们完全可以“依葫芦画瓢”,在application.yml中定义自己的配置属性,并通过Spring Boot自动配置管理特性将其实例化到自定义类中。例如,我们在集成第三方平台时,一般都会要求传入appKey和 appSecret,这时就可以将它们定义到application.yml中,如:

然后创建Properties类以便提取配置信息,代码如下:

这里首先将前缀设置为third,注意字段名和 application.yml 中定义的属性名要一致(驼峰命名的允许转为用短横线隔开,如 appKey可以写成app-key )。此外,必须添加@Component注解,否则无法装载到Spring容器中,这样我们就可以通过@Autowired注解注入并使用它,如:

@Autowired
private ThirdProperties thirdProperties;

Actuator监控管理

Actuator是 Spring Boot的一个非常强大的功能,它可以实现应用程序的监控管理,比如帮助我们收集应用程序的运行情况、监测应用程序的健康状况以及显示HTTP跟踪请求信息等。它是我们搭建微服务架构必不可少的环节,是整个系统稳定运行的保障。

在Spring Boot中,集成Actuator也比较简单,只需要在pom.xml中添加以下依赖即可:


org.springframework.boot
spring-boot-starter-actuator

Actuator 内置有很多端点( endpoint ),我们通过这些端点可以获得不同的监控信息。但Actuator默认只开启health和info两个端点。如果要开启更多的端点,可以通过以下配置实现:

management:
endpoints:
web:
exposure:
include: '*'

其中,'*'表示开启所有端点。当然,也可以指定开启的端点,如:

management:
endpoints:
web:
exposure:
include: health,info,httptrace

上述配置表示开启health、info和 httptrace端点。这时启动应用程序,访问地址
localhost:8081/demo/actuator/health,读者通常会在浏览器中看到如图3-2所示的界面。

上述界面提示为406,Not Acceptable,说明不能访问该地址。为了解决这个问题,在Spring Boot应用中,还需要在webConfig类中添加@EnablewebWvc注解,该注解表示启用WebMVC。之后重启应用并访问health端点,就可以看到如图3-3所示的界面,其中 status为UuP说明当前系统正常运行。

表3-1列举了Actuator内置的端点及其功能。

Spring Boot CLI命令行工具

Spring Boot CLI ( Command Line Interface)是一款用于快速搭建基于Spring原型的命令行工具。它支持运行Groovy脚本,这意味着你可以拥有一个与Java语言类似的没有太多样板代码的语法。通过CLI来使用Spring Boot 不是唯一方式,但它是让Spring应用程序“脱离地面”的最快速方法。

安装

要使用CLI,首先应从Spring官方仓库上下载CLI的 release版本,地址是
https:/repo.spring.iol/release/org/springframework/boot/spring-boot-cli/2.0.3.RELEASE/spring-boot-cli-2.0.3.RELEASE-bin.zip。

下载完成并解压后,打开spring-2.0.3.RELEASE文件夹,进入 bin目录,可以看到两个脚本文件,其中 spring用于Linux平台,spring.bat用于Windows平台。Spring Boot CLI依赖Groovy,但是我们不用单独安装它,因为它已经包含到Spring Boot CLI的依赖中了。

可以先将 spring.bat设置到环境变量中,如图3-4所示。

然后打开cmd命令行工具,输入spring --version,可以查看当前Spring Boot CLI的版本号,如:

C:AUsers\lynn>spring --version
Spring CLI v2.0.3.RELEASE

这样Spring Boot CLI就安装完成了。

用法

前面提到过,我们可以通过运行Groovy脚本来快速构建Spring Boot应用。因此,需要先创建一个Groovy脚本文件,并编写以下代码:

@RestController
class HelloController {
@RequestMapping("/")def home() {
"Hello World! "
}
}

上述代码和Java语法很像,它其实就是Groovy脚本代码。看这样一段代码,读者是否似曾相似呢?没错,它和我们编写的控制器类的代码是一样的,编写好这段代码并运行命令:

spring run app.groovy

其中,app.groovy就是你编写的Groovy脚本文件名。第一次启动时,Spring Boot CLI会下载很多依赖包,因此可能需要等待一段时间,启动完成后,访问localhost:8080,浏览器就会打印 Hello World!。

当然,如果读者对Groovy的语法不是很熟悉,我们还可以编写Java代码,如:

@RestController
public class Hellocontroller {
@RequestMapping("/")
public String home() {
return "Hello world ! "
}
}

需要注意的是,文件后缀需要改成.java,然后运行命令 spring run app.java即可。

小结

Spring Boot最核心的部分不外乎起步依赖机制、自动配置管理、Actuator监控管理和Spring BootCLI命令行工具,本章对它们分别进行了剖析。通过对四大核心的研究,读者应该对Spring Boot有了更深的了解,并为后面学习Spring Cloud打下坚实的基础。

本文给大家讲解的内容是springcloud实战:springboot核心原理

  1. 下篇文章给大家讲解的是springcloud实战:探索springcloud的秘密;
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持

相关推荐

搭建一个20人的办公网络(适用于20多人的小型办公网络环境)

楼主有5台机上网,则需要一个8口路由器,组网方法如下:设备:1、8口路由器一台,其中8口为LAN(局域网)端口,一个WAN(广域网)端口,价格100--400元2、网线N米,这个你自己会看了:)...

笔记本电脑各种参数介绍(笔记本电脑各项参数新手普及知识)

1、CPU:这个主要取决于频率和二级缓存,频率越高、二级缓存越大,速度越快,现在的CPU有三级缓存、四级缓存等,都影响相应速度。2、内存:内存的存取速度取决于接口、颗粒数量多少与储存大小,一般来说,内...

汉字上面带拼音输入法下载(字上面带拼音的输入法是哪个)

使用手机上的拼音输入法打成汉字的方法如下:1.打开手机上的拼音输入法,在输入框中输入汉字的拼音,例如“nihao”。2.根据输入法提示的候选词,选择正确的汉字。例如,如果输入“nihao”,输...

xpsp3安装版系统下载(windowsxpsp3安装教程)

xpsp3纯净版在采用微软封装部署技术的基础上,结合作者的实际工作经验,融合了许多实用的功能。它通过一键分区、一键装系统、自动装驱动、一键设定分辨率,一键填IP,一键Ghost备份(恢复)等一系列...

没有备份的手机数据怎么恢复

手机没有备份恢复数据方法如下1、使用数据线将手机与电脑连接好,在“我的电脑”中可以看到手机的盘符。  2、将手机开启USB调试模式。在手机设置中找到开发者选项,然后点击“开启USB调试模式”。  3、...

电脑怎么激活windows11专业版

win11专业版激活方法有多种,以下提供两种常用的激活方式:方法一:使用激活密钥激活。在win11桌面上右键点击“此电脑”,选择“属性”选项。进入属性页面后,点击“更改产品密钥或升级windows”。...

华为手机助手下载官网(华为手机助手app下载专区)

华为手机助手策略调整,已不支持从应用市场下载手机助手,目前华为手机助手是需要在电脑上下载或更新手机助手到最新版本,https://consumer.huawei.com/cn/support/his...

光纤线断了怎么接(宽带光纤线断了怎么接)

宽带光纤线断了可以重接,具体操作方法如下:1、光纤连接的时候要根据束管内,同色相连,同芯相连,按顺序进行连接,由大到小。一般有三种连接方法,分别是熔接、活动连接和机械连接。2、连接的时候要开剥光缆,抛...

深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
  • 深度操作系统安装教程(深度操作系统安装教程图解)
win7旗舰版和专业版区别(win7旗舰版跟专业版)

1、功能区别:Win7旗舰版比专业版多了三个功能,分别是Bitlocker、BitlockerToGo和多语言界面; 2、用途区别:旗舰版的功能是所有版本中最全最强大的,占用的系统资源,...

万能连接钥匙(万能wifi连接钥匙下载)

1、首先打开wifi万能钥匙软件,若手机没有开启WLAN,就根据软件提示打开WLAN开关;2、打开WLAN开关后,会显示附近的WiFi,如果知道密码,可点击相应WiFi后点击‘输入密码’连接;3、若不...

雨林木风音乐叫什么(雨林木风是啥)

雨林木风的创始人是陈年鑫先生。陈年鑫先生于1999年创立了雨林木风公司,其初衷是为满足中国市场对高品质、高性能电脑的需求。在陈年鑫先生的领导下,雨林木风以技术创新、产品质量和客户服务为核心价值,不断推...

aics6序列号永久序列号(aics6破解序列号)

关于AICS6这个版本,虽然是比较久远的版本,但是在功能上也是十分全面和强大的,作为一名平面设计师的话,AICS6的现有的功能已经能够应付几乎所有的设计工作了……到底AICC2019的功能是不是...

win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
  • win7正在启动windows 卡住(win7正在启动windows卡住了 进入安全模式)
手机可以装电脑系统吗(手机可以装电脑系统吗怎么装)

答题公式1:手机可以通过数据线或无线连接的方式给电脑装系统。手机安装系统需要一定的技巧和软件支持,一般需要通过数据线或无线连接的方式与电脑连接,并下载相应的软件和系统文件进行安装。对于大部分手机用户来...