• SpringBoot四大核心组件


    前言

    先透露一下,四大组件分别是:starter, autoconfigure, CLI 以及actuator。下面我们就来详细介绍一些他们有什么用。

    一、Spring Boot Starter

    1.1 Starter的应用示例

    1. <dependency>
    2.     <groupId>org.springframework.boot</groupId>
    3.     <artifactId>spring-boot-starter-thymeleaf</artifactId>
    4. </dependency>
    5. <dependency>
    6.     <groupId>org.mybatis.spring.boot</groupId>
    7.     <artifactId>mybatis-spring-boot-starter</artifactId>
    8.     <version>1.3.2</version>
    9. </dependency>

    在我们的Spring Boot项目种的POM文件中总会看到这两种依赖:spring-boot-starter-xxx 和 xxx-spring-boot-starter

    这就是spring boot的四大组件之一的starter。

    a、spring-boot-starter-thymeleaf

    b、mybatis-spring-boot-starter

    两种starter的区别就是:

    • 官方提供的starter是这样的:spring-boot-starter-xxx

    • 非官方的starter是这样的:xxx-spring-boot-starter

    其中xxx就是我们想要依赖的组件或者jar包。上例就是我们spring boot用来引入thymeleaf引擎和mybatis框架所配置的依赖。引入之后通过简单的约定配置就可以正常使用。比如:

    Thymeleaf引擎约定配置:

    1. ##前端引擎配置
    2. spring:
    3.   thymeleaf:
    4.     enabled: true
    5.     servlet:
    6.       content-type: text/html
    7.     mode: HTML
    8.     ## 页面前缀
    9.     prefix: classpath:/templates/
    10.     ## 后缀
    11.     suffix: .html

    Mybatis约定配置:

    1. mybatis:
    2.   mapper-locations: classpath:mapper/*.xml  #注意:一定要对应mapper映射xml文件的所在路径
    3.   type-aliases-package: com.hi.ld.vo.system  # 注意:对应实体类的路径
    4.   configuration:
    5.     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

    下面让我们来看看以前怎么配置thymeleaf。

    1.2 Spring Boot之前的Thymeleaf和Mybatis应用

    废话不多说,直接上代码:

    1.2.1 Thymeleaf配置

    a. 添加对应依赖:

    1. <dependency>
    2.   <groupId>org.thymeleaf</groupId>
    3.   <artifactId>thymeleaf-spring5</artifactId>
    4.   <version>3.0.11.RELEASE</version>
    5. </dependency>
    6. <dependency>
    7.   <groupId>org.thymeleaf.extras</groupId>
    8.   <artifactId>thymeleaf-extras-java8time</artifactId>
    9.   <version>3.0.4.RELEASE</version>
    10. </dependency>

    b. bean配置

    1. <bean id="templateResolver"
    2.        class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    3.   <property name="prefix" value="/WEB-INF/templates/" />
    4.   <property name="suffix" value=".html" />
    5.   <property name="templateMode" value="HTML5" />
    6. </bean>
    7. <bean id="templateEngine"
    8.       class="org.thymeleaf.spring4.SpringTemplateEngine">
    9.   <property name="templateResolver" ref="templateResolver" />
    10. </bean>
    11. <bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
    12.   <property name="templateEngine" ref="templateEngine" />
    13. </bean>

    1.2.2 Mybatis配置

    a. 添加对应依赖:

    1.  <dependency>
    2.    <groupId>org.springframework.boot</groupId>
    3.    <artifactId>spring-boot-starter-jdbc</artifactId>
    4.  </dependency>
    5.  <dependency>
    6.    <groupId>org.mybatis</groupId>
    7.    <artifactId>mybatis</artifactId>
    8.  </dependency>
    9.  <dependency>
    10.    <groupId>org.mybatis</groupId>
    11.    <artifactId>mybatis-spring</artifactId>
    12.  </dependency>

    b. bean配置

    下面的第3, 4步骤就是Mybatis相关配置。第一步是引入资源配置。第二步是配置数据源

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    4.  xsi:schemaLocation="http://www.springframework.org/schema/beans
    5.  http://www.springframework.org/schema/beans/spring-beans.xsd
    6.  http://www.springframework.org/schema/context
    7.  http://www.springframework.org/schema/context/spring-context.xsd">
    8.  
    9.  
    10.  <context:property-placeholder location="classpath:jdbc.properties" />
    11.  
    12.  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    13.   
    14.   <property name="driverClass" value="${jdbc.driver}" />
    15.   <property name="jdbcUrl" value="${jdbc.url}" />
    16.   <property name="user" value="${jdbc.username}" />
    17.   <property name="password" value="${jdbc.password}" />
    18.   
    19.   <property name="maxPoolSize" value="30" />
    20.   <property name="minPoolSize" value="10" />
    21.   
    22.   <property name="autoCommitOnClose" value="false" />
    23.   
    24.   <property name="checkoutTimeout" value="10000" />
    25.   
    26.   <property name="acquireRetryAttempts" value="2" />
    27.  bean>
    28.  
    29.  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    30.   
    31.   <property name="dataSource" ref="dataSource" />
    32.   
    33.   <property name="configLocation" value="classpath:mybatis-config.xml" />
    34.   
    35.   <property name="typeAliasesPackage" value="com.soecode.lyf.entity" />
    36.   
    37.   <property name="mapperLocations" value="classpath:mapper/*.xml" />
    38.  bean>
    39.  
    40.  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    41.   
    42.   <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    43.   
    44.   <property name="basePackage" value="com.soecode.lyf.dao" />
    45.  bean>
    46. beans>

    1.2.3 小结

    a、Starter 帮我们封装好了所有需要的依赖,避免我们自己添加导致的一些Jar包冲突或者缺少包的情况;

    b、Starter帮我们自动注入了需要的Bean实例到Spring 容器中,不需要我们手动配置(这个可以说是starter干的,实际上并不是,这里埋个坑,下面解答);

    所以: starter包的内容就是pom文件,就是一个依赖传递包。

    二、Spring Boot Autoconfigure

    2.1 autoconfigure 简介

    autoconfigure在我们的开发中并不会被感知,因为它是存在与我们的starter中的。所以我们的每个starter都是依赖autoconfigure的:

    当然我们也可以把autoconfig的内容直接放在starter包里边。

    a. spring-boot-autoconfigure:

    注意:这里有个点,就是官网提供的configure大多数在spring-boot-autoconfigure包里边,并没有单独创建新包。

    b、mybatis-spring-boot-autoconfigure

    2.2 小结

    autoconfigure内容是配置Bean实例到Spring容器的实际代码实现包,然后提供给starter依赖。所以说1.2.3中的b项所说的配置Bean实例到Spring容器中实际是autoconfigure做的,因为是starter依赖它,所以也可以说是starter干的。

    所以:autocinfigure是starter体现出来的能力的代码实现

    三、Spring Boot CLI

    Spring Boot CLI是一个命令行使用Spring Boot的客户端工具;主要功能如下:

    • 运行groovy脚本 => 官网2.1

    • 打包groovy文件到jar => 官网2.3

    • 初始化Spring Boot项目 => 官网2.4

    • 其他

    先上个官网文档:

    https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-cli.html

    因为这个我们用的比较少,所以就不多赘述了。个人感觉比较流脾的功能就是命令行直接执行groovy脚本了。

    四、Spring Boot actuator

    actuator是Spring Boot的监控插件,本身提供了很多接口可以获取当前项目的各项运行状态指标。

    官网文档:

    https://docs.spring.io/spring-boot/docs/2.4.0/reference/html/production-ready-features.html#production-ready

    名词解释:

    • Endpoints: 需要监控的端点。参考官网第二节官网文档

    可用的端点:

    下方的是web工程的端点。

    使用方法如下:

    4.1 添加依赖

    1. <dependency>
    2.     <groupId>org.springframework.boot</groupId>
    3.     <artifactId>spring-boot-starter-actuator</artifactId>
    4. </dependency>

    4.2 配置需要开启监控的端点

    1. management:
    2.   endpoint:
    3.     health: ## 开启健康监控端点
    4.       enabled: true
    5.     beans: ## 开启Bean实例监控端点
    6.       enabled: true

    4.3 启动服务并验证

    4.3.1 启动结果

    4.3.2 查看各个监控信息

    浏览器访问(查看监控信息地址):http://localhost:9500/actuator

    查看服务健康状态:

    总结

    本章主要介绍了Spring Boot的四大组件的作用,其中主要是starter和autoconfigure,另外的CLI和actuator用的并不多,所以没有仔细介绍。

  • 相关阅读:
    生成二维码
    梳理市面上的2大NFT定价范式和4种解决方案
    第十四章《多线程》第4节:控制线程
    LogbackMDC 2022年有变动?
    淘宝/天猫 添加购物车API接口教程
    六、串口通信
    Camera Hal OEM模块 ---- cmr_snapshot.c
    shell之file命令
    Win11怎么把桌面文件路径改到D盘
    SystemUI GlobalActions plugin解析
  • 原文地址:https://blog.csdn.net/wufaliang003/article/details/127712123