SpringBoot四大核心組件,你瞭解多少

點擊關注公衆號,Java乾貨及時送達


牛逼!又發現了一款面試題庫,太全了!!

點擊查看


前言

先透露一下,四大組件分別是:starter, autoconfigure, CLI 以及actuator。下面我們就來詳細介紹一些他們有什麼用。

一、Spring Boot Starter

1.1 Starter的應用示例

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

在我們的Spring Boot項目種的POM文件中總會看到這兩種依賴:

spring-boot-starter-xxxxxx-spring-boot-starter

這就是spring boot的四大組件之一的starter。

a、spring-boot-starter-thymeleaf

b、mybatis-spring-boot-starter

兩種starter的區別就是 >>

其中xxx就是我們想要依賴的組件或者jar包。上例就是我們spring boot用來引入thymeleaf引擎和mybatis框架所配置的依賴。引入之後通過簡單的約定配置就可以正常使用。比如:

Thymeleaf引擎約定配置:

##前端引擎配置
spring:
  thymeleaf:
    enabled: true
    servlet:
      content-type: text/html
    mode: HTML
    ## 頁面前綴
    prefix: classpath:/templates/
    ## 後綴
    suffix: .html

Mybatis約定配置:

mybatis:
  mapper-locations: classpath:mapper/*.xml  #注意:一定要對應mapper映射xml文件的所在路徑
  type-aliases-package: com.hi.ld.vo.system  # 注意:對應實體類的路徑
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

下面讓我們來看看以前怎麼配置thymeleaf。

1.2 Spring Boot之前的Thymeleaf和Mybatis應用

廢話不多說,直接上代碼:

1.2.1 Thymeleaf配置

a. 添加對應依賴:

<dependency>
  <groupId>org.thymeleaf</groupId>
  <artifactId>thymeleaf-spring5</artifactId>
  <version>3.0.11.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.thymeleaf.extras</groupId>
  <artifactId>thymeleaf-extras-java8time</artifactId>
  <version>3.0.4.RELEASE</version>
</dependency>

b. bean配置

<bean id="templateResolver"
       class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">

  <property name="prefix" value="/WEB-INF/templates/" />
  <property name="suffix" value=".html" />
  <property name="templateMode" value="HTML5" />
</bean>

<bean id="templateEngine"
      class="org.thymeleaf.spring4.SpringTemplateEngine">

  <property name="templateResolver" ref="templateResolver" />
</bean>

<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
  <property name="templateEngine" ref="templateEngine" />
</bean>

1.2.2 Mybatis配置

a. 添加對應依賴:

 <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-jdbc</artifactId>
 </dependency>
 <dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
 </dependency>
 <dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis-spring</artifactId>
 </dependency>

b. bean配置

下面的第3, 4步驟就是Mybatis相關配置。第一步是引入資源配置。第二步是配置數據源

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context.xsd"
>

 <!-- 配置整合mybatis過程 -->
 <!-- 1.配置數據庫相關參數properties的屬性:${url} -->
 <context:property-placeholder location="classpath:jdbc.properties" />

 <!-- 2.數據庫連接池 -->
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <!-- 配置連接池屬性 -->
  <property name="driverClass" value="${jdbc.driver}" />
  <property name="jdbcUrl" value="${jdbc.url}" />
  <property name="user" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />

  <!-- c3p0連接池的私有屬性 -->
  <property name="maxPoolSize" value="30" />
  <property name="minPoolSize" value="10" />
  <!-- 關閉連接後不自動commit -->
  <property name="autoCommitOnClose" value="false" />
  <!-- 獲取連接超時時間 -->
  <property name="checkoutTimeout" value="10000" />
  <!-- 當獲取連接失敗重試次數 -->
  <property name="acquireRetryAttempts" value="2" />
 </bean>

 <!-- 3.配置SqlSessionFactory對象 -->
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <!-- 注入數據庫連接池 -->
  <property name="dataSource" ref="dataSource" />
  <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
  <property name="configLocation" value="classpath:mybatis-config.xml" />
  <!-- 掃描entity包 使用別名 -->
  <property name="typeAliasesPackage" value="com.soecode.lyf.entity" />
  <!-- 掃描sql配置文件:mapper需要的xml文件 -->
  <property name="mapperLocations" value="classpath:mapper/*.xml" />
 </bean>

 <!-- 4.配置掃描Dao接口包,動態實現Dao接口,注入到spring容器中 -->
 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <!-- 注入sqlSessionFactory -->
  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
  <!-- 給出需要掃描Dao接口包 -->
  <property name="basePackage" value="com.soecode.lyf.dao" />
 </bean>
</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的客戶端工具;主要功能如下:

先上個官網文檔:

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 添加依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

4.2 配置需要開啓監控的端點

management:
  endpoint:
    health: ## 開啓健康監控端點
      enabled: true
    beans: ## 開啓Bean實例監控端點
      enabled: true

4.3 啓動服務並驗證

4.3.1 啓動結果

4.3.2 查看各個監控信息

瀏覽器訪問(查看監控信息地址):http://localhost:9500/actuator

查看服務健康狀態:

其他API查看官方文檔瞭解或者留言一起研究一下,厚着臉皮我也沒怎麼用過這個。不過下一章介紹了starter和autoconfigure之後我們就可以去研究actuator的源碼了。。。。

總結

本章主要介紹了Spring Boot的四大組件的作用,其中主要是starter和autoconfigure,另外的CLI和actuator用的並不多,所以沒有仔細介紹。

(感謝閱讀,希望對你所有幫助)
來源:blog.csdn.net/u011909918/
article/details/109647196
 
    
    
    

如有文章對你有幫助,

歡迎關注❤️、點贊👍、轉發📣!



推薦 , Java面試題庫,詳情點擊:
牛逼!又發現了一款牛逼的Java面試題庫,史上最強!

點擊文末“閱讀原文”可直達

本文分享自微信公衆號 - Java專欄(finishbug)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章