<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 9088字,需瀏覽 19分鐘

           ·

          2021-09-01 19:08


          前言

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

          一、Spring Boot Starter

          1.1 Starter的應(yīng)用示例

          <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的區(qū)別就是 >>

          • 官方提供的starter是這樣的:spring-boot-starter-xxx
          • 非官方的starter是這樣的:xxx-spring-boot-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  #注意:一定要對應(yīng)mapper映射xml文件的所在路徑
            type-aliases-package: com.hi.ld.vo.system  # 注意:對應(yīng)實體類的路徑
            configuration:
              log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

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

          1.2 Spring Boot之前的Thymeleaf和Mybatis應(yīng)用

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

          1.2.1 Thymeleaf配置

          a. 添加對應(yīng)依賴:

          <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. 添加對應(yīng)依賴:

           <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相關(guān)配置。第一步是引入資源配置。第二步是配置數(shù)據(jù)源

          <?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.配置數(shù)據(jù)庫相關(guān)參數(shù)properties的屬性:${url} -->
           <context:property-placeholder location="classpath:jdbc.properties" />

           <!-- 2.數(shù)據(jù)庫連接池 -->
           <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" />
            <!-- 關(guān)閉連接后不自動commit -->
            <property name="autoCommitOnClose" value="false" />
            <!-- 獲取連接超時時間 -->
            <property name="checkoutTimeout" value="10000" />
            <!-- 當(dāng)獲取連接失敗重試次數(shù) -->
            <property name="acquireRetryAttempts" value="2" />
           </bean>

           <!-- 3.配置SqlSessionFactory對象 -->
           <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!-- 注入數(shù)據(jù)庫連接池 -->
            <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接口包,動態(tài)實現(xiàn)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 小結(jié)

          a、Starter 幫我們封裝好了所有需要的依賴,避免我們自己添加導(dǎo)致的一些Jar包沖突或者缺少包的情況;

          b、Starter幫我們自動注入了需要的Bean實例到Spring 容器中,不需要我們手動配置(這個可以說是starter干的,實際上并不是,這里埋個坑,下面解答);

          所以: starter包的內(nèi)容就是pom文件,就是一個依賴傳遞包。

          二、Spring Boot Autoconfigure

          2.1 autoconfigure 簡介

          autoconfigure在我們的開發(fā)中并不會被感知,因為它是存在與我們的starter中的。所以我們的每個starter都是依賴autoconfigure的:

          當(dāng)然我們也可以把autoconfig的內(nèi)容直接放在starter包里邊。

          a. spring-boot-autoconfigure:

          注意:這里有個點,就是官網(wǎng)提供的configure大多數(shù)在spring-boot-autoconfigure包里邊,并沒有單獨創(chuàng)建新包。

          b、mybatis-spring-boot-autoconfigure

          2.2 小結(jié)

          autoconfigure內(nèi)容是配置Bean實例到Spring容器的實際代碼實現(xiàn)包,然后提供給starter依賴。所以說1.2.3中的b項所說的配置Bean實例到Spring容器中實際是autoconfigure做的,因為是starter依賴它,所以也可以說是starter干的。

          所以:autocinfigure是starter體現(xiàn)出來的能力的代碼實現(xiàn)

          三、Spring Boot CLI

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

          • 運行g(shù)roovy腳本 => 官網(wǎng)2.1
          • 打包groovy文件到j(luò)ar => 官網(wǎng)2.3
          • 初始化Spring Boot項目 => 官網(wǎng)2.4
          • 其他

          先上個官網(wǎng)文檔:

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

          因為這個我們用的比較少,所以就不多贅述了。個人感覺比較流脾的功能就是命令行直接執(zhí)行g(shù)roovy腳本了。

          四、Spring Boot actuator

          actuator是Spring Boot的監(jiān)控插件,本身提供了很多接口可以獲取當(dāng)前項目的各項運行狀態(tài)指標。

          官網(wǎng)文檔:

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

          名詞解釋:

          Endpoints: 需要監(jiān)控的端點。參考官網(wǎng)第二節(jié)官網(wǎng)文檔

          可用的端點:

          下方的是web工程的端點。

          使用方法如下:

          4.1 添加依賴

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

          4.2 配置需要開啟監(jiān)控的端點

          management:
            endpoint:
              health: ## 開啟健康監(jiān)控端點
                enabled: true
              beans: ## 開啟Bean實例監(jiān)控端點
                enabled: true

          4.3 啟動服務(wù)并驗證

          4.3.1 啟動結(jié)果

          4.3.2 查看各個監(jiān)控信息

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

          查看服務(wù)健康狀態(tài):

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

          總結(jié)

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

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

          程序汪資料鏈接

          程序汪接的7個私活都在這里,經(jīng)驗整理

          Java項目分享  最新整理全集,找項目不累啦 04版

          堪稱神級的Spring Boot手冊,從基礎(chǔ)入門到實戰(zhàn)進階

          臥槽!字節(jié)跳動《算法中文手冊》火了,完整版 PDF 開放下載!

          臥槽!阿里大佬總結(jié)的《圖解Java》火了,完整版PDF開放下載!

          字節(jié)跳動總結(jié)的設(shè)計模式 PDF 火了,完整版開放下載!

          歡迎添加程序汪個人微信 itwang007  進粉絲群或圍觀朋友圈

          瀏覽 40
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美操B视频在线观看 | 久久tv | 日韩无码高清视频 | 欧美视频手机在线 | 超碰操逼逼|