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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Cloud 云架构下的微服务架构:部门微服务(Dept)

發(fā)布時(shí)間:2024/8/23 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Cloud 云架构下的微服务架构:部门微服务(Dept) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者 |?springML

來源 | CSDN 博客 責(zé)編 | Carol

出品 | CSDN云計(jì)算(ID:CSDNcloud)

封圖|?CSDN下載于視覺中國?

對(duì)于 Rest 基礎(chǔ)架構(gòu)實(shí)現(xiàn)處理是 SpringCloud 核心所在,其基本操作形式在 SpringBoot 之中已經(jīng)有了明確的講解,那么本次為了清晰可見,創(chuàng)建一套新的微服務(wù)架構(gòu):部門微服務(wù)(Dept)。

如果要想進(jìn)行 SpringCloud 開發(fā),那么一定要對(duì) SpringBoot 有一定的了解,同時(shí)本次也將融合 MyBatis 開發(fā)技術(shù)實(shí)現(xiàn)整體的微服務(wù)的創(chuàng)建處理。

搭建項(xiàng)目環(huán)境

對(duì)于現(xiàn)在的項(xiàng)目創(chuàng)建一個(gè):microcloud 的整體父 pom 項(xiàng)目,那么隨后為了方便管理,將創(chuàng)建其三個(gè)子模塊:

  • microcloud-api 模塊,作為公共的信息導(dǎo)入配置模塊;

  • microcloud-provider-dept-8001:作為服務(wù)提供者,該提供者負(fù)責(zé)使用 Mybatis 與數(shù)據(jù)庫交互;

  • microcloud-consumer-80:作為微服務(wù)調(diào)用的客戶端使用。

1.1 創(chuàng)建一個(gè)新的 maven 項(xiàng)目:microcloud;

1.2 【microcloud】修改 pom.xml 文件,主要追加 springcloud 與 springboot 兩個(gè)開發(fā)包的依賴關(guān)系;

<project?xmlns="http://maven.apache.org/POM/4.0.0"?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.study</groupId><artifactId>microcloud</artifactId><version>0.0.1</version><packaging>pom</packaging><name>microcloud</name><url>http://maven.apache.org</url><properties><jdk.version>1.8</jdk.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencyManagement><dependencies><dependency>????<!--?進(jìn)行SpringCloud依賴包的導(dǎo)入處理?--><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Dalston.SR1</version><type>pom</type><scope>import</scope></dependency><dependency>????<!--?SpringCloud離不開SpringBoot,所以必須要配置此依賴包?--><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>1.5.4.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><finalName>microcloud</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>${jdk.version}</source><!--?源代碼使用的開發(fā)版本?--><target>${jdk.version}</target><!--?需要生成的目標(biāo)class文件的編譯版本?--><encode>${project.build.sourceEncoding}</encode></configuration></plugin></plugins></build> </project>

1)【microcloud-api】建立一個(gè) api 的公共模塊,該模塊的主要功能是提供有公共處理類,本次預(yù)計(jì)建立一個(gè) Dept 數(shù)據(jù)表,里面的字段:deptno(Long)、dname(String)、loc(保存的數(shù)據(jù)庫的名字);

package?cn.study.vo;import?java.io.Serializable;@SuppressWarnings("serial") public?class?Dept?implements?Serializable?{private?Long?deptno?;private?String?dname?;private?String?loc?;public?Long?getDeptno()?{return?deptno;}public?void?setDeptno(Long?deptno)?{this.deptno?=?deptno;}public?String?getDname()?{return?dname;}public?void?setDname(String?dname)?{this.dname?=?dname;}public?String?getLoc()?{return?loc;}public?void?setLoc(String?loc)?{this.loc?=?loc;}@Overridepublic?String?toString()?{return?"Dept?[deptno="?+?deptno?+?",?dname="?+?dname?+?",?loc="?+?loc+?"]";} }

3、 創(chuàng)建一個(gè) Rest 提供者的【microcloud-provider-dept-8001】項(xiàng)目模塊,在這個(gè)模塊里面主要定義要使用的數(shù)據(jù)庫腳本:

DROP?DATABASE?IF?EXISTS?"study8001"?; CREATE?DATABASE?study8001?CHARACTER?SET?UTF8?; USE?study8001?; CREATE?TABLE?dept?(deptno????????BIGINT????????AUTO_INCREMENT?,dname????????VARCHAR(50)?,loc????????????VARCHAR(50)?,CONSTRAINT?pk_deptno?PRIMARY?KEY(deptno) )?; INSERT?INTO?dept(dname,loc)?VALUES?('開發(fā)部',database())?; INSERT?INTO?dept(dname,loc)?VALUES?('財(cái)務(wù)部',database())?; INSERT?INTO?dept(dname,loc)?VALUES?('市場(chǎng)部',database())?; INSERT?INTO?dept(dname,loc)?VALUES?('后勤部',database())?; INSERT?INTO?dept(dname,loc)?VALUES?('公關(guān)部',database())?;

由于在整個(gè)微服務(wù)里面需要進(jìn)行負(fù)載均衡的操作,所以本次在使用的時(shí)候加入了數(shù)據(jù)庫的名稱信息。

創(chuàng)建 Dept 微服務(wù)

所謂的微服務(wù)的核心本質(zhì)就是 JSON 的傳輸,那么既然現(xiàn)在要求使用 MyBatis 進(jìn)行數(shù)據(jù)庫操作,所以應(yīng)該在項(xiàng)目里面配置 Druid 數(shù)據(jù)庫連接池,而后對(duì)外進(jìn)行項(xiàng)目的發(fā)布。

1、 【microcloud-provider-dept-8001】修改 pom.xml 配置文件,追加相關(guān)的依賴程序支持包:

????<dependencies><dependency><groupId>cn.study</groupId><artifactId>microcloud-api</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency>?<groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency></dependencies>

2、 【microcloud-provider-dept-8001】創(chuàng)建一個(gè) IDeptDAO 數(shù)據(jù)操作接口,這個(gè)接口里面將提供有三個(gè)數(shù)據(jù)操作方法:

package?cn.study.microcloud.dao;import?java.util.List;import?org.apache.ibatis.annotations.Mapper;import?cn.study.vo.Dept; @Mapper public?interface?IDeptDAO?{public?boolean?doCreate(Dept?vo)?;public?Dept?findById(Long?id)?;public?List<Dept>?findAll()?; }

3、 【microcloud-provider-dept-8001】修改 application.yml 配置文件,追加 mybatis 和服務(wù)的相關(guān)配置信息:

server:port:?8001 mybatis:config-location:?classpath:mybatis/mybatis.cfg.xml????#?mybatis配置文件所在路徑type-aliases-package:?cn.study.vo????????????#?定義所有操作類的別名所在包mapper-locations:?????????????????????????????????????#?所有的mapper映射文件-?classpath:mybatis/mapper/**/*.xml spring:datasource:type:?com.alibaba.druid.pool.DruidDataSource????#?配置當(dāng)前要使用的數(shù)據(jù)源的操作類型driver-class-name:?org.gjt.mm.mysql.Driver??????#?配置MySQL的驅(qū)動(dòng)程序類url:?jdbc:mysql://localhost:3306/study8001???????????#?數(shù)據(jù)庫連接地址username:?root??????????????????????????????????#?數(shù)據(jù)庫用戶名password:?mysqladmin????????????????????????????#?數(shù)據(jù)庫連接密碼dbcp2:??????????????????????????????????????????#?進(jìn)行數(shù)據(jù)庫連接池的配置min-idle:?5???????????????????????????????????#?數(shù)據(jù)庫連接池的最小維持連接數(shù)????initial-size:?5???????????????????????????????#?初始化提供的連接數(shù)max-total:?5??????????????????????????????????#?最大的連接數(shù)max-wait-millis:?200??????????????????????????#?等待連接獲取的最大超時(shí)時(shí)間

4、 【microcloud-provider-dept-8001】定義 src/main/resources/mybatis/mybatis.cfg.xml 配置文件:

<?xml?version="1.0"?encoding="UTF-8"??> <!DOCTYPE?configuration???PUBLIC?"-//mybatis.org//DTD?Config?3.0//EN"???"http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration>?<!--?進(jìn)行Mybatis的相應(yīng)的環(huán)境的屬性定義?--><settings>????<!--?在本項(xiàng)目之中開啟二級(jí)緩存?--><setting?name="cacheEnabled"?value="true"/></settings> </configuration>

5、 【microcloud-provider-dept-8001】修改 src/main/resources/mybatis/mapper/cn/mldn/Dept.xml 配置文件:

<?xml?version="1.0"?encoding="UTF-8"?> <!DOCTYPE?mapper?PUBLIC?"-//mybatis.org//DTD?Mapper?3.0//EN"? "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper?namespace="cn.study.microcloud.dao.IDeptDAO"><select?id="findById"?resultType="Dept"?parameterType="long">SELECT?deptno,dname,loc?FROM?dept?WHERE?deptno=#{deptno}?;</select><select?id="findAll"?resultType="Dept">SELECT?deptno,dname,loc?FROM?dept?;</select><insert?id="doCreate"?parameterType="Dept">INSERT?INTO?dept(dname,loc)?VALUES?(#{dname},database())?;</insert> </mapper>?

6、 【microcloud-provider-dept-8001】建立 IDeptService 接口,做業(yè)務(wù)實(shí)現(xiàn):

package?cn.study.microcloud.service;import?java.util.List;import?cn.study.vo.Dept;public?interface?IDeptService?{public?Dept?get(long?id)?;public?boolean?add(Dept?dept)?;public?List<Dept>?list()?; } package?cn.study.microcloud.service.impl;import?java.util.List;import?javax.annotation.Resource;import?org.springframework.stereotype.Service;import?cn.study.microcloud.dao.IDeptDAO; import?cn.study.microcloud.service.IDeptService; import?cn.study.vo.Dept; @Service public?class?DeptServiceImpl?implements?IDeptService?{@Resourceprivate?IDeptDAO?deptDAO?;@Overridepublic?Dept?get(long?id)?{return?this.deptDAO.findById(id);}@Overridepublic?boolean?add(Dept?dept)?{return?this.deptDAO.doCreate(dept);}@Overridepublic?List<Dept>?list()?{return?this.deptDAO.findAll();}}

7、 【microcloud-provider-dept-8001】定義程序的運(yùn)行主類

package?cn.study.microcloud;import?org.springframework.boot.SpringApplication; import?org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public?class?Dept_8001_StartSpringCloudApplication?{public?static?void?main(String[]?args)?{SpringApplication.run(Dept_8001_StartSpringCloudApplication.class,?args);} }

8、 【microcloud-provider-dept-8001】進(jìn)行業(yè)務(wù)接口測(cè)試編寫:

package?cn.study.test;import?static?org.junit.Assert.fail;import?javax.annotation.Resource;import?org.junit.Test; import?org.junit.runner.RunWith; import?org.springframework.boot.test.context.SpringBootTest; import?org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import?org.springframework.test.context.web.WebAppConfiguration;import?cn.study.microcloud.Dept_8001_StartSpringCloudApplication; import?cn.study.microcloud.service.IDeptService; import?cn.study.vo.Dept; @SpringBootTest(classes?=?Dept_8001_StartSpringCloudApplication.class) @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration public?class?IDeptServiceTest?{@Resourceprivate?IDeptService?deptService?;@Testpublic?void?testGet()?{System.out.println(this.deptService.get(1));}@Testpublic?void?testAdd()?{Dept?dept?=?new?Dept()?;dept.setDname("測(cè)試部-"?+?System.currentTimeMillis());System.out.println(this.deptService.add(dept));?}@Testpublic?void?testList()?{System.out.println(this.deptService.list());}}

9、 【microcloud-provider-dept-8001】建立Restful的DeptRest 服務(wù)類:

package?cn.study.microcloud.rest;import?javax.annotation.Resource;import?org.springframework.web.bind.annotation.PathVariable; import?org.springframework.web.bind.annotation.RequestBody; import?org.springframework.web.bind.annotation.RequestMapping; import?org.springframework.web.bind.annotation.RequestMethod; import?org.springframework.web.bind.annotation.RestController;import?cn.study.microcloud.service.IDeptService; import?cn.study.vo.Dept;@RestController public?class?DeptRest?{@Resourceprivate?IDeptService?deptService?;@RequestMapping(value="/dept/get/{id}",method=RequestMethod.GET)public?Object?get(@PathVariable("id")?long?id)?{return?this.deptService.get(id)?;}@RequestMapping(value="/dept/add",method=RequestMethod.GET)public?Object?add(@RequestBody?Dept?dept)?{return?this.deptService.add(dept)?;}@RequestMapping(value="/dept/list",method=RequestMethod.GET)public?Object?list()?{return?this.deptService.list()?;} }

10、 修改 hosts 配置文件,追加一個(gè)映射路徑(路徑:C:\Windows\System32\drivers\etc\hosts)。

127.0.0.1?dept-8001.com

11、 觀察 Rest 服務(wù)能否正常提供:

· 調(diào)用 get 操作:dept-8001.com:8001/dept/get/1;

· 調(diào)用 list 操作:dept-8001.com:8001/dept/list;

客戶端調(diào)用微服務(wù)

1、 創(chuàng)建一個(gè) Maven 的新的模塊:microcloud-consumer-80;

2、 【microcloud-consumer-80】修改 application.yml 配置文件:

server:port:?80

3、 【microcloud-consumer-80】創(chuàng)建一個(gè) Rest 的配置程序類,主要進(jìn)行 RestTemplate 類對(duì)象創(chuàng)建,這里很重要,編寫這個(gè)類然后在控制器里面使用@Resource注解注入以后控制器就可以調(diào)用其他微服務(wù)了

package?cn.study.microcloud.config;import?org.springframework.context.annotation.Bean; import?org.springframework.context.annotation.Configuration; import?org.springframework.web.client.RestTemplate;@Configuration public?class?RestConfig?{@Beanpublic?RestTemplate?getRestTemplate()?{return?new?RestTemplate()?;} }

4、 【microcloud-consumer-80】創(chuàng)建一個(gè)控制器,為了簡(jiǎn)化處理,本次不再進(jìn)行頁面定義了,所有服務(wù)結(jié)果都使用 Rest 返回;

package?cn.study.microcloud.controller;import?java.util.List;import?javax.annotation.Resource;import?org.springframework.web.bind.annotation.RequestMapping; import?org.springframework.web.bind.annotation.RestController; import?org.springframework.web.client.RestTemplate;import?cn.study.vo.Dept;@RestController public?class?ConsumerDeptController?{public?static?final?String?DEPT_GET_URL?=?"http://dept-8001.com:8001/dept/get/";public?static?final?String?DEPT_LIST_URL?=?"http://dept-8001.com:8001/dept/list/";public?static?final?String?DEPT_ADD_URL?=?"http://dept-8001.com:8001/dept/add";//使用@Resource注解注入RestTemplate以后控制器就可以調(diào)用其他微服務(wù)了@Resourceprivate?RestTemplate?restTemplate;@RequestMapping(value?=?"/consumer/dept/get")public?Object?getDept(long?id)?{Dept?dept?=?this.restTemplate.getForObject(DEPT_GET_URL?+?id,Dept.class);return?dept;}@SuppressWarnings("unchecked")@RequestMapping(value?=?"/consumer/dept/list")public?Object?listDept()?{List<Dept>?allDepts?=?this.restTemplate.getForObject(DEPT_LIST_URL,List.class);?return?allDepts;}@RequestMapping(value?=?"/consumer/dept/add")public?Object?addDept(Dept?dept)?{Boolean?flag?=?this.restTemplate.postForObject(DEPT_ADD_URL,?dept,Boolean.class);return?flag;} }

5、 【microcloud-consumer-80】編寫啟動(dòng)程序類

package?cn.study.microcloud;import?org.springframework.boot.SpringApplication; import?org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public?class?Consumer_80_StartSpringCloudApplication?{public?static?void?main(String[]?args)?{SpringApplication.run(Consumer_80_StartSpringCloudApplication.class,args);} }

6、 修改 hosts 配置文件,追加訪問控制路徑:

127.0.0.1?client.com

7、 進(jìn)行代碼測(cè)試調(diào)用:

調(diào)用數(shù)據(jù)返回:

http://client.com/consumer/dept/get?id=1;

測(cè)試列表數(shù)據(jù):

http://client.com/consumer/dept/list;

測(cè)試數(shù)據(jù)增加:

http://client.com/consumer/dept/add?dname=WEB 測(cè)試

感興趣的開發(fā)者小伙伴都可以嘗試一下這個(gè)方法,或許能讓你找到一些新的靈感。也可以在評(píng)論區(qū)和我們一起討論你的想法~

本文由作者首發(fā)于 CSDN 博客,原文鏈接:

https://blog.csdn.net/springML/article/details/88039134?ops_request_misc=&request_id=&biz_id=&utm_source=distribute.pc_search_result.none-task-blog-blog_SOBAIDUEND-9

同時(shí),歡迎所有開發(fā)者掃描下方二維碼填寫《開發(fā)者與AI大調(diào)研》,只需2分鐘,便可收獲價(jià)值299元的「AI開發(fā)者萬人大會(huì)」在線直播門票!

推薦閱讀:小網(wǎng)站的容器化(下):網(wǎng)站容器化的各種姿勢(shì),先跟著擼一波代碼再說! 你知道嗎?其實(shí) Oracle 直方圖自動(dòng)統(tǒng)計(jì)算法存在這些缺陷!(附驗(yàn)證步驟) 詳解以太坊虛擬機(jī)(EVM)的數(shù)據(jù)存儲(chǔ)機(jī)制 比特幣當(dāng)贖金,WannaRen 勒索病毒二度來襲!平臺(tái)抗住日訪問量 7 億次,研發(fā)品控流程全公開“手把手撕LeetCode題目,扒各種算法套路的褲子”北京四環(huán)堵車引發(fā)的智能交通大構(gòu)想從Ngin到Pandownload,程序員如何避免面向監(jiān)獄編程? 真香,朕在看了!

總結(jié)

以上是生活随笔為你收集整理的Spring Cloud 云架构下的微服务架构:部门微服务(Dept)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。