日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

微服务配置中心实战:Spring + MyBatis + Druid + Nacos

發布時間:2023/12/3 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微服务配置中心实战:Spring + MyBatis + Druid + Nacos 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自??微服務配置中心實戰:Spring + MyBatis + Druid + Nacos

很多基于 Spring MVC 框架的 Web 開發中,Spring + MyBatis + Druid 是一個黃金組合,在此基礎上如果融入一個配置中心,會發生什么特別的變化呢?

本文將通過一個用戶信息查詢示例,演示在 Spring Web 項目中如何將數據庫連接池的配置存放到 Nacos 中,進行統一運維管控,達到配置治理與降低數據泄露風險的目的。

Nacos是今年開源的一款幫助構建云原生應用的動態服務發現、配置和服務管理平臺,提供注冊中心、配置中心和動態DNS服務三大功能。項目地址:https://github.com/alibaba/nacos

數據表

在測試數據庫中新建?user?表,其中包含用戶名稱等字段,與接下來的 User model 類相對應。

CREATE?TABLE?`user`?(`id`?bigint(20)?unsigned?NOT?NULL?AUTO_INCREMENT,`name`?varchar(10)?NOT?NULL?DEFAULT?''?COMMENT?'名字',`create_time`?timestamp?NOT?NULL?DEFAULT?CURRENT_TIMESTAMP?COMMENT?'創建時間',`update_time`?timestamp?NOT?NULL?DEFAULT?CURRENT_TIMESTAMP?ON?UPDATE?CURRENT_TIMESTAMP?COMMENT?'更新時間',PRIMARY?KEY?(`id`) )?ENGINE=InnoDB?DEFAULT?CHARSET=utf8mb4?COMMENT='用戶表';

添加一行測試數據:

INSERT?INTO?`user`?(`name`,?`create_time`,?`update_time`)?VALUES?('Nacos',?CURRENT_TIMESTAMP,?CURRENT_TIMESTAMP);

Spring

該示例是 Spring 常規的 Web 項目,項目結構如下:

?

image.png | left | 301x454

pom.xml

引入 Nacos Spring 的依賴包?nacos-spring-context:

<dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-spring-context</artifactId><version>${latest.version}</version> </dependency>

筆者在撰寫本文時,nacos-spring-context 的最新版本為:0.2.2-RC1

dispatcher-servlet.xml

dispatcher-servlet.xml?為示例中 Spring MVC 的入口配置,在其中通過?import引入了 Nacos、Druid、MyBatis 的配置,其內容如下:

<?xml?version="1.0"?encoding="UTF-8"?> <beans?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><mvc:annotation-driven/><context:annotation-config/><context:component-scan?base-package="com.alibaba.nacos.example.spring"/><import?resource="nacos.xml"/><import?resource="datasource.xml"/><import?resource="spring-config-mybatis.xml"/> </beans>

nacos.xml

關鍵看?nacos.xml?,nacos-spring-context 的擴展了 Spring 的 XML Schema 機制,自定義了?<nacos:property-source/>?等元素,詳細配置內容如下:

<?xml?version="1.0"?encoding="UTF-8"?> <beans?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.springframework.org/schema/beans"xmlns:nacos="http://nacos.io/schema/nacos"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://nacos.io/schema/nacoshttp://nacos.io/schema/nacos.xsd"><nacos:global-properties?server-addr="127.0.0.1:8848"?/><nacos:property-source?data-id="datasource.properties"/> </beans>

其中通過?<nacos:global-properties />?設置 Nacos Server 的連接地址,通過?<nacos:property-source />?從 Nacos 配置中心加載了 dataId 為?datasource.properties?的配置,nacos-spring-context 會解析獲取到的配置內容并添加到 Spring?Environment 的 PropertySources 中,使得后續初始化 Druid 連接池的時候能獲取到數據庫連接地址、賬號密碼、初始連接池大小等信息。這就是 Nacos 配置中心與 Spring 結合的關鍵點。

datasource.xml

這是數據庫連接池的配置,初始化了?DruidDataSource?的 Spring Bean,并將其通過?DataSourceTransactionManager?設置為 Spring 的數據庫連接池。

<?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:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/tx?http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans.xsd"><bean?id="dataSource"?class="com.alibaba.druid.pool.DruidDataSource"init-method="init"?destroy-method="close"><property?name="url"?value="${datasource.url}"/><property?name="username"?value="${datasource.username}"/><property?name="password"?value="${datasource.password}"/><property?name="initialSize"?value="${datasource.initial-size}"/><property?name="maxActive"?value="${datasource.max-active}"/></bean><bean?id="txManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property?name="dataSource"?ref="dataSource"/></bean><tx:annotation-driven?transaction-manager="txManager"/> </beans>

從上面的配置內容看一看到,數據庫連接池不需要因為引入 Nacos 配置中做任何特殊的改變。

其他

User 的 Model、Service 等也跟不使用 Nacos 配置中心時完全一致,這里就不一一貼出,完整示例代碼可以在 nacos-examples 獲取:https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-example/nacos-spring-config-datasource-example

Nacos

參照 Nacos 官網的快速開始:https://nacos.io/zh-cn/docs/quick-start.html

從 Nacos 的 github 上下載最新穩定版本的 nacos-server:https://github.com/alibaba/nacos/releases

解壓后到 Nacos 的 bin 目錄下,執行 startup 啟動腳本以單機模式啟動 Nacos Server, Windows 請使用?cmd startup.cmd?,Linux/Unix/Mac 環境請使用?sh startup.sh -m standalone?。

啟動后,瀏覽器訪問:http://localhost:8848/nacos/index.html?就可以來到 Nacos 的控制臺,新增 dataId 為?datasource.properties?的配置,對應上面 Spring 的?nacos.xml?中的 dataId。

配置內容則與 Spring 的?datasource.xml?中的連接池屬性一一對應,示例如下:

datasource.url=jdbc:mysql://localhost:3306/test datasource.username=root datasource.password=root datasource.initial-size=1 datasource.max-active=20

?

運行

示例中是?UserController#get()?通過 UserServce 調用 Mybatis 的 Mapper 類(UserMapper)從數據庫中查詢指定 ID 的用戶信息,假設該示例是運行在端口為 8080 的 Tomcat 上,訪問:http://localhost:8080/users?id=1?地址將返回:

{"id":?1,"name":?"Nacos" }

總結

本文通過一個示例演示在“原生” Spring 中如何使用 Nacos 配置中心,從示例可以看出,對原有的 Spring 項目基本沒有任何侵入,只需在 pom.xml 中添加 nacos-spring-context 的依賴,然后再定義并引入?nacos.xml?配置,就可以將數據庫連接池信息管控起來,做到統一運維,并降低數據泄露的風險。

試想,如果你有多個項目連接同一個數據庫或一個項目部署很多實例,當數據庫密碼修改時,你不需要去修改每個項目的?datasource.properties?文件,再走一次應用的部署發布流程,而是到 Nacos 的控制臺上修改一個配置項,再去重啟應用實例即可。當然,如果你是自己管理數據庫連接池,則可以做到連“重啟應用實例”都不需要了,只需在監聽到 Nacos 配置變化時重新初始化數據庫連接池即可。

將 Spring 配置放置到 Nacos 配置中,還能用上“動態推送”、“版本管理”、“快速回滾”、“監聽查詢”,以及后續的 “灰度發布”、“配置加密”、“權限管控”等功能,為 Spring + MyBatis + Druid 插上“飛翔”的翅膀。

完整示例代碼:

https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-example/nacos-spring-config-datasource-example

總結

以上是生活随笔為你收集整理的微服务配置中心实战:Spring + MyBatis + Druid + Nacos的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。