實戰!如何用Spring+Mybatis快速搭建1個微服務

2020-09-15 Java日記本

概述

面向服務的架構(SOA)好處自然不必多說,把原來一個龐大的應用中不同的功能單元,拆分成一個一個的微服務,並通過Rpc調用(如 dubbo 或者RESTful)。 達到「高內聚,低耦合」的效果。

Spring Boot設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。用spring boot來快速搭建一個微服務是十分方便的(相比於傳統的spring框架)

最近整理的Java架構學習視頻和大廠項目底層知識點,需要的同學歡迎私信我【資料】發給你~一起學習進步!

Spring boot

Spring Boot的例子很多,這裡簡單用Spring+Mybatis來介紹。用一句話來介紹Spring Boot的好處是使用配置文件來簡化編碼,這裡的編碼不僅僅值代碼,還包括各種xml文件。

第一步 pom依賴

  • 這裡使用的spring boot的版本為.5.3.RELEASE
  • mybatis-spring-boot-starter 是Mybatis提供的,所以為什麼名字不是叫spring-boot-mybatis-starter(題外話)

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.5.3.RELEASE</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.28</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.41</version> </dependency> </dependencies>

第二步 配置文件

server: port: 8181spring: datasource: url: jdbc:mysql://10.160.247.90:9306/realname username: realname password: realname driverClassName: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSourcemybatis: mapperLocations: classpath:mapper/*.xml type-handlers-package: com.netease.urs.realname.dao type-aliases-package: com.netease.urs.realname.entity configuration: map-underscore-to-camel-case: true

第三步 啟動應用

是的,經過以上配置就可以啟動一個Spring Boot的應用。(Mybatis有jar包可以直接生產Mapper類和xml文件,就不再贅述)

@SpringBootApplicationpublic class Boot { public static void main(String[] args) { new SpringApplicationBuilder().build().run(Boot.class, args);}

現在反過來看看第二步,其實Spring boot已經幫我們生產了DataSource,Mybatis也通過配置文件幫生成了SqlSessionFactory等類。其實反過來看以前的代碼,是不是其實很多配置信息都是直接copy過來,稍微修改一下就可以用了。spring boot就是把關鍵的部分由我們自己通過配置文件來配置,根據這些關鍵配置信息就可以自動注入相關的Bean。

接入urs服務臺配置刷新

第一步: pom依賴

<dependency> <groupId>com.netease.urs</groupId> <artifactId>urs-mg-property-spring-boot</artifactId> <version>1.1.9-SNAPSHOT</version> </dependency>

第二步:在服務臺管理配置信息

Urs服務臺的功能很簡單,就是根據不同的應用,管理一組key-value對。然後提供一個url,就把同一個應用下的key-value用json格式返回。


可以看出,我們的配置類型有傳統的JSON,PROPERTIES,YAMLl 還有自定義的類型,如 LIST

第三步:使用註解注入

例如我們有一個ip白名單,key的名字為ip_config(如上圖)

@Componentpublic class IpFilter implements Filter { @RefreshValue(propertyName = &34;) private List<String> ipConfigs; ...

ps:註解注入只是更新配置信息的一種方式,如果有更定製化需求,還可以通過實現一個接口,通過編寫代碼來更新。

第四步: 配置文件

urs: property: refresh-token: abcdefg refresh-url: http://xxx.xxx.xxx.xxx/api/getConfigs.json?path=urs-mg/spring-boot-quick-start listener-port: 8182 listener-path: /refresh

  • refresh-url :服務臺提供的接口
  • refresh-token:調用服務臺接口時需要token校驗
  • listener-path, listener-port::監聽刷新的url,埠。即當訪問 本機的8182埠,並且url為/refresh的時候,就會從服務臺拉取一次最新的配置信息,並且更新配置信息(例如我們在服務臺上修改了ip_config的配置,刷新以後同時應用中的配置信息也會同步修改)

小節

這裡也是秉承了Spring boot的歷練,使用配置文件來來配置配置刷新功能(有點繞口),而不用編寫具體代碼。

快速啟動dubbo服務

dubbo在國內是一個比較流行的Rpc框架。如何快速搭建一個dubbo服務呢

第一步:pom文件

名字有點唬人,其實是我自己寫的。。

<dependency> <groupId>com.netease.urs</groupId> <artifactId>srping-boot-dubbo-starter</artifactId> <version>1.0.2-SNAPSHOT</version></dependency>

第二步:配置文件

一個簡單的dubbo 服務者的配置如下:

dubbo: application: name: provider registry: address: zookeeper://10.165.124.13:2182

當然其實還有很多進階的配置,也是支持的。

第三步: 註解

使用Dubbo的com.alibaba.dubbo.config.annotation.Service 註解來註冊服務提供者。已經完成了dubbo的服務的註冊,剩下的就只用關心業務代碼了

可選步驟: Filter

Filter是dubbo中比較常見的擴展,如果要實現一個dubbo filter還是比較麻煩的,但是有在這裡使用我們的jar以後就很簡單了,直接繼承一個類就可以了

@Componentpublic class ProviderFilter extends AbstractDubboProviderFilterSupport { public Result invoke(Invoker<?> invoker, Invocation invocation) { System.out.println(&34;); return invoker.invoke(invocation); }}

總結

可以看出,就算是同時使用了上面3種情況,其實也是不需要編寫一行代碼,只需要簡單的配置即可。

來源:網易工程師-李周

有任何問題歡迎留言交流~


整理總結不易,如果覺得這篇文章有意思的話,歡迎轉發、收藏,給我一些鼓勵~

有想看的內容或者建議,敬請留言!

最近利用空餘時間整理了一些精選Java架構學習視頻和大廠項目底層知識點,需要的同學歡迎私信我發給你~一起學習進步!有任何問題也歡迎交流~

Java日記本,每日存檔超實用的技術乾貨學習筆記,每天陪你前進一點點~

相關焦點

  • MyBatis初級實戰之一:Spring Boot集成
    《MyBatis初級實戰》系列旨在通過一系列編碼實戰,和讀者一起掌握MyBatis的基本用法,幫助初學者快速運用MyBatis參與實際開發;聚焦MyBatis《MyBatis初級實戰》面向的是對MyBatis有興趣的讀者,向讀者們提供可用的方案和代碼,這裡不是比較Hibernate、sqltoy-orm
  • SpringCloud微服務架構實戰:微服務治理
    (2)並發執行的最大線程數默認為10個,這遠遠不夠,所以這裡設置為500個。讀者可以根據伺服器的CPU頻率和個數酌情設定。當然,對於一個微服務來說,只有不啟用斷路器功能,其性能才是最優的。如何實現有效的監控通過使用Spring Cloud工具套件提供的功能,結合第三方提供的工具,我們可以對所有微服務的運行情況進行更加有效的監控,從而為微服務提供更加安全可靠的保障。針對這些工具的使用,我們只需引用相關的工具組件,增加一-點簡單的設計,並進行相關的配置,就可以使用其強大的功能。
  • Spring Boot 技術棧快速實戰課程(源碼+文檔)
    平時如果我們需要搭建一個spring web項目的時候需要怎麼做呢?1)配置web.xml,加載spring和SpringMVC。2)配置資料庫連接、配置Spring事務。3)配置加載配置文件的讀取,開啟註解。4)配置日誌文件。……等等配置完成之後部署Tomcat調試。
  • Spring Boot + MyBatis 多模塊搭建教程
    集成Mybatis父pom文件中聲明mybatis-spring-boot-starter及lombok依賴dependencyManagement><dependencies><dependency>        
  • 看阿里大牛揭秘:如何用Springboot快速構建微服務體系
    前言:在當今網際網路時代,技術圈最火的名詞大概就是微服務了。國內外的網際網路技術會議上,但凡分享題目中包含&34;,不論內容質量如何,一定人山人海、摩肩接踵。追本溯源,服務化的架構思想十年前就是軟體架構的標準範式。
  • 深入Spring Boot (十):整合Mybatis框架詳解
    XML配置方式整合1.添加依賴整合Mybatis需要添加Mybatis框架相關jar,可以使用mybatis-spring-boot-starter,本例使用MySQL資料庫,所以需要添加MySQL依賴jar,具體Gradle構建文件build.gradle如下:plugins { id 'java'
  • 阿里P9也懸賞重金查找的Boot+Cloud微服務開發實戰
    Spring Boot是Spring的一套快速配置工具,可以基於SpringBoot快速開發單個微服務;Spring Cloud是基於Spring Boot搭建的一個更高層次的大型項目,利用Spring Boot的便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,且可以利用Spring Boot做到一鍵啟動和部署,由Spring Boot風格進行再封裝
  • Java程式設計師必會 springmvc-spring-mybatis框架整合搭建傻瓜教程
    ssm是用於將springmvc-spring-mybatis三個框架整合來進行java開發web項目。本文通過ssm三大框架整合的形式講解springmvc的使用教程,最新的框架版本主流IDE,只要按照圖中步驟能夠保證每個人的框架搭建完成並成功運行。這裡使用maven來構建項目,我們需要創建一個名為ssm的maven項目,打包方式為war包。
  • MyBatis初級實戰之三:集成druid
    初級實戰》系列的第三篇,我們將實戰springboot、mybatis、druid的集成,並驗證,由以下內容組成:新建springboot工程,裡面有詳細的集成druid的操作;編寫和執行單元測試代碼,並規避一個由集成druid帶來的問題;啟動springboot應用,通過swagger驗證基本功能正常;
  • 想要快速上手 Spring Boot?看這些就夠了|Gitee 項目推薦
    復用,組裝性強主要應用技術:spring SecurityEhcachequartzswagger2Mysql5.6springjdbcdruidspring socialspring sessionlayerui+vue.js項目地址:https://gitee.com/YYDeament/88ybg3、項目名稱:JAVA 分布式快速開發平臺項目簡介:JAVA
  • SpringCloud微服務架構開發實戰:微服務的集中化配置
    隨著單塊架構向微服務架構演進之後,微服務的應用數量也會劇增。同時,每個微服務都有自己的配置文件,這些文件如果都散落在各自的應用中,必然會對應用的升級和配置管理帶來挑戰,畢竟誰也沒有能力去手工配置那麼多微服務的配置文件。而且,對運維來說,一方面手工配置單工作量很大,幾乎不可能完成;另-方面,相對而言,人為的操作會加大出錯的機率。
  • 10年IT老兵親述SpringCloud開發從入門到實戰文檔
    ,接下來將從Spring Boot微框架搭建、Spring Cloud常用組件應用,到微服務案例實戰,層層剝繭式分析,全流程講解Spring Cloud開發應用,實戰案例拿來就用,帶大家快速上手。開發從入門到實戰,大家要特別注意每一章的內容介紹:第1章什麼是微服務;微服務是SOA之後越來越流行的體系結構模式之一。
  • 呼和浩特java課程實戰培訓_博雅環球教育
    任小龍 高級講師 曾經的yJF開源團隊成員,技術經理,實戰經驗豐富,主講的Java課程在網易有20W+粉絲,深受學員好評,授課思維行雲流水,幽默生動!立即播放 業務員,應屆大學生,初級女設計師,他們如何改變命運?
  • 理解 MyBatis 是如何在 Spring 容器中初始化的
    當遇到 MyBatis 初始化失敗時,如何正確的找到分析問題的切入點?本文將針對這些問題進行介紹。本文基於 MyBatis 3 和 Spring ,假設讀者已經知道如何使用 Maven 和 MyBatis,以及了解 Spring 的容器機制。
  • 線上SpringCloud網關調用微服務跨機房了,咋整?
    ,會進行服務的降級,進而熔斷該節點微服務的調用,快速返回」錯誤」的響應信息。mybatis.spring.boot</groupId>    <artifactId>mybatis-spring-boot-starter</artifactId>  </dependency>
  • SpringCloud微服務架構開發實戰:實現微服務熔斷機制
    實現微服務的熔斷機制我們在上節已經基本了解了如何將Hystrix 集成進應用。我們也通過一個簡單的例子,知道了如何通過Hystrix技術實現自己的斷路器。總的來說,使用Hystrix是非常簡單的。PathVariable;import com.waylau. spring.cloud.weather.vo.city;import com. waylau. spring.cloud.weather .vo.WeatherResponse;/**★訪問數據的客戶端.* @since 1.0.0 2017年11月6日Cauthor <a href="https:/ /waylau.
  • MyBatis初級實戰之二:增刪改查
    本文是《MyBatis初級實戰》系列的第二篇,前文《 》我們知道了如何在SpringBoot中集成MyBatis,本篇就一起來練習基本功:增刪改查;本篇概覽本篇要練習的內容如下:開發本文的實戰使用的資料庫和表結構與前文《 》一模一樣;前文《 》新建了父工程mybatis,本文繼續在此工程中新增子工程,名為curd,整個子工程文件結構如下:
  • 字節大神熬夜整理MyBatis+Redis+Kafka+spring源碼與實戰技術齊飛
    理由有以下三點,也可以說是三點好處:1、應對面試,拿到更好的 offer2、跟大師學習,提升自己3、解決開發中的疑難雜症但是閱讀源碼並不是一件簡單的事情,可能在剛開始的時候,會一臉懵逼,聽到源碼的時候就感覺它像個大老虎站在那裡,但是不要放棄,認真的去研究他的時候
  • 2020年排名前20基於SpringBoot搭建的開源項目,幫你快速項目搭建
    /52itstyle/spring-boot-seckillstar數:7.6k作者:小柒2012這是一個從0到1構建的分布式秒殺系統。,整合了spring-security-oauth2、nacos、feign、sentinel、springcloud-gateway等。
  • Sharding-jdbc的實戰入門之水平分表(一)
    b、企業級SpringBoot應用多個子項目配置文件規劃、多環境支持(一)c、企業級SpringBoot應用多個子項目配置文件規劃、多環境支持(二)d、企業級SpringBoot應用多個子項目配置文件之配置中心(三)e、利用阿里開源工具進行排查線上CPU居高問題f、阿里二面:如何快速排查死鎖?如何避免死鎖?