OCP開源項目:數據庫公共組件的實現(db-spring-boot-starter)

OCP開源項目:數據庫公共組件的實現

前言

企業微服務開放平臺 ,歷經多家公司生產考驗

  • 基於layui先後端分離的企業級微服務架構
  • 兼容spring cloud netflix & spring cloud alibaba
  • 優化Spring Security內部實現,實現API調用的統一出口和權限認證受權中心
  • 提供完善的企業微服務流量監控,日誌監控能力
  • 提供完善的壓力測試方案
  • 提供完善的微服務部署方案

項目演示地址

http://59.110.164.254:8066/login.html 用戶名/密碼:admin/adminhtml

項目監控地址

http://47.98.236.203:3000 用戶名/密碼:admin/1q2w3e4rgit

入羣學習:(備註:Coder編程) 羣1:483725710(滿2000) 羣2:897924507github

db-spring-boot-starter

前面項目中,我們使用了db-core爲整個項目提供通用的數據庫處理,如今咱們將採用springboot 標準starter的作法,重構項目基礎組件。面試

編寫數據庫公共組件db-spring-boot-starter算法

  • 工具類 spring

    image

  • AOP切換數據源類 數據庫

    image

  • 多數據源定義core log 編程

    image

user-center代碼

  • user-center pom文件使用 後端

    image

  • user-center application.yml springboot

    image

我們想一想,在不一樣項目中,我們的項目是如何裝配這些對象的嗎?下面我們須要揭密。

  • db-spring-boot-starter 中定義了spring.factories文件

    image

  • DataSourceAutoConfig 中@Import(DataSourceAOP.class)

    image

那麼這些文件是如何完成加載到spring容器的呢? 此時,我們必須回到user-center,閱讀源碼

  • @SpringBootApplication

    image

  • @EnableAutoConfiguration

    image

  • AutoConfigurationImportSelector

    image

閱讀到這裏,咱們瞭解到,user-center在啓動時,因爲@SpringBootApplication是複合註解,包含@EnableAutoConfiguration,這個類中@import了核心處理類AutoConfigurationImportSelector,這個類的核心就是將classpath中搜索全部META-INF/spring.factories配置文件 ,而且將其中org.springframework.boot.autoconfigure.EnableAutoConfiguration key對應的配置項加載到spring容器

springboot中的類SPI擴展機制

在springboot的自動裝配過程當中,最終會加載META-INF/spring.factories文件,而加載的過程是由SpringFactoriesLoader加載的。從CLASSPATH下的每一個Jar包中搜尋全部META-INF/spring.factories配置文件,而後將解析properties文件,找到指定名稱的配置後返回。須要注意的是,其實這裏不單單是會去ClassPath路徑下查找,會掃描全部路徑下的Jar包,只不過這個文件只會在Classpath下的jar包中。

總結回顧

內部實現的關鍵點有

  • 1:ImportSelector 該接口的方法的返回值都會被歸入到spring容器管理中
  • 2:SpringFactoriesLoader 該類能夠從classpath中搜索全部META-INF/spring.factories配置文件,並讀取配置

推薦

強烈推薦一款開源項目! (OPC)微服務能力開放平臺!

Nginx監控安裝:Filebeat+ES+Grafana(全)

OCP開源項目:Spring Cloud Gateway模塊中動態路由的實現

文末

歡迎關注我的微信公衆號:Coder編程 歡迎關注Coder編程公衆號,主要分享數據結構與算法、Java相關知識體系、框架知識及原理、Spring全家桶、微服務項目實戰、DevOps實踐之路、每日一篇互聯網大廠面試或筆試題以及PMP項目管理知識等。更多精彩內容正在路上~ 也分享一些雜文~

文章收錄至 Github: github.com/CoderMerlin… Gitee: gitee.com/573059382/c… 歡迎關注並star~

微信公衆號
相關文章
相關標籤/搜索