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

歡迎訪問 生活随笔!

生活随笔

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

javascript

SpringCloud 搭建项目环境、创建 Dept 微服务、客户端调用微服务

發布時間:2024/4/13 javascript 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringCloud 搭建项目环境、创建 Dept 微服务、客户端调用微服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對于 Rest 基礎架構實現處理是 SpringCloud 核心所在,其基本操作形式在 SpringBoot 之中已經有了明確 的講解,那么本次為 了清晰可見,創建一套新的微服務架構:部門微服務(Dept)。如果要想進行 SpringCloud 開發,那么一定要對 SpringBoot 有一定的了解,同時本次也將融合 MyBatis 開發技術實現整體的微 服務的創建處理。2.1、搭建項目環境對于現在的項目創建一個:microcloud 的整體父 pom 項目,那么隨后為了方便管理,將創建其三個子模塊:· microcloud-api 模塊,作為公共的信息導入配置模塊;· microcloud-provider-dept-8001:作為服務提供者,該提供者負責使用 Mybatis 與數據庫交互;· microcloud-consumer-80:作為微服務調用的客戶端使用。· microcloud-consumer-80:作為微服務調用的客戶端使用。1、 創建一個新的 maven 項目:microcloud;2、 【microcloud】修改 pom.xml 文件,主要追加 springcloud 與 springboot 兩個開發包的依賴關系;注意:SpringCloud 中針對于依賴包的版本并不是像傳統那樣采用數字的形式定義的,而是使用了一系列的英國的地鐵或城鎮的名字來定義的。<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> <!-- 進行SpringCloud依賴包的導入處理 --><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><!-- 源代碼使用的開發版本 --><target>${jdk.version}</target><!-- 需要生成的目標class文件的編譯版本 --><encode>${project.build.sourceEncoding}</encode></configuration></plugin></plugins></build><modules><module>microcloud-provider-dept-8001</module></modules> </project> 3、 【microcloud-api】建立一個 api 的公共模塊,該模塊的主要功能是提供有公共處理類,本次預計建立一個 Dept 數據表,里面 的字段:deptno(Long)、dname(String)、loc(保存的數據庫的名字);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+ "]";} }<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-api</artifactId><version>0.0.1-SNAPSHOT</version> </project> 4、 創建一個 Rest 提供者的【microcloud-provider-dept-8001】項目模塊,在這個模塊里面主要定義要使用的數據庫腳本: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 ('開發部',database()) ; INSERT INTO dept(dname,loc) VALUES ('財務部',database()) ; INSERT INTO dept(dname,loc) VALUES ('市場部',database()) ; INSERT INTO dept(dname,loc) VALUES ('后勤部',database()) ; INSERT INTO dept(dname,loc) VALUES ('公關部',database()) ;由于在整個微服務里面需要進行負載均衡的操作,所以本次在使用的時候加入了數據庫的名稱信息。 2.2、創建 Dept 微服務所謂的微服務的核心本質就是 JSON 的傳輸,那么既然現在要求使用 MyBatis 進行數據庫操作,所以應該在項目里面配置 Druid 數據庫連接池,而后對外進行項目的發布。1、 【microcloud-provider-dept-8001】修改 pom.xml 配置文件,追加相關的依賴程序支持包:<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><parent><groupId>cn.study</groupId><artifactId>microcloud</artifactId><version>0.0.1</version></parent><artifactId>microcloud-provider-dept-8001</artifactId><dependencies><dependency><groupId>cn.study</groupId><artifactId>microcloud-api</artifactId><version>0.0.1-SNAPSHOT</version></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><version>1.0.31</version></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><version>2.0.0</version></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></project> 2、 【microcloud-provider-dept-8001】創建一個 IDeptDAO 數據操作接口,這個接口里面將提供有三個數據操作方法: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 和服務的相關配置信息:application.propertiesserver.port = 8001spring.messages.basename=i18n/Messages,i18n/Pagesspring.profiles.active=productspring.datasource.url=jdbc:mysql://localhost:3306/study8001 ?characterEncoding=utf-8&useSSL=false&useUnicode=true spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.druid.initialSize=5 spring.datasource.druid.minIdle=5 spring.datasource.druid.maxActive=20 spring.datasource.druid.maxWait=60000## Mybatis? mybatis.config-location=classpath:mybatis/mybatis.cfg.xml mybatis.mapper-locations=classpath:mybatis/mapper/**/*.xml mybatis.typeAliasesPackage=cn.study.vo 4、 【microcloud-provider-dept-8001】定義 src/main/resources/mybatis/mybatis.cfg.xml 配置文件: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> <!-- 進行Mybatis的相應的環境的屬性定義 --><settings> <!-- 在本項目之中開啟二級緩存 --><setting name="cacheEnabled" value="true"/></settings> </configuration> 5、 【microcloud-provider-dept-8001】修改 src/main/resources/mybatis/mapper/cn/study/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 接口,做業務實現: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】定義程序的運行主類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】進行業務接口測試編寫:package cn.study.test;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("測試部-" + 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 服務類: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() ;} } 11、 觀察 Rest 服務能否正常提供:· 調用 get 操作:http://localhost:8001/dept/get/1{"deptno":1,"dname":"開發部","loc":"study8001"}· 調用 list 操作:http://localhost:8001/dept/list[{"deptno":1,"dname":"開發部","loc":"study8001"}, {"deptno":2,"dname":"財務部","loc":"study8001"}, {"deptno":3,"dname":"市場部","loc":"study8001"}, {"deptno":4,"dname":"后勤部","loc":"study8001"}, {"deptno":5,"dname":"公關部","loc":"study8001"}, {"deptno":6,"dname":"測試部-1551928957533","loc":"study8001"}] 2.3、客戶端調用微服務1、 創建一個 Maven 的新的模塊:microcloud-consumer-80;2、 【microcloud-consumer-80】修改 application.properties 配置文件:server.port = 80pom.xml<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>microcloud-consumer-80</groupId><artifactId>microcloud-consumer-80</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.12.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><thymeleaf.version>3.0.9.RELEASE</thymeleaf.version><thymeleaf-layout-dialect.version>2.3.0</thymeleaf-layout-dialect.version><!-- 布局功能的支持程序 thymeleaf3主程序 layout2以上版本 --><!-- thymeleaf2 layout1 --><thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version></properties> <dependencies><dependency><!-- 引入web模塊 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>microboot-restful-api</groupId><artifactId>microboot-restful-api</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.7.0</version></dependency><dependency><groupId>cn.study</groupId><artifactId>microcloud-api</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies></project> 3、 【microcloud-consumer-80】創建一個 Rest 的配置程序類,主要進行 RestTemplate 類對象創建,這里很重要,編寫這個類然后在控制器里面使用@Resource注解注入以后控制器就可以調用其他微服務了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】創建一個控制器,為了簡化處理,本次不再進行頁面定義了,所有服務結果都使用 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://localhost:8001/dept/get/";public static final String DEPT_LIST_URL = "http://localhost:8001/dept/list/";public static final String DEPT_ADD_URL = "http://localhost:8001/dept/add";//使用@Resource注解注入RestTemplate以后控制器就可以調用其他微服務了@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】編寫啟動程序類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);} } 進行代碼測試調用:· 調用數據返回:http://localhost/consumer/dept/get?id=1{"deptno":1,"dname":"開發部","loc":"study8001"}· 測試列表數據:http://localhost/consumer/dept/list[{"deptno":1,"dname":"開發部","loc":"study8001"}, {"deptno":2,"dname":"財務部","loc":"study8001"}, {"deptno":3,"dname":"市場部","loc":"study8001"}, {"deptno":4,"dname":"后勤部","loc":"study8001"}, {"deptno":5,"dname":"公關部","loc":"study8001"}, {"deptno":6,"dname":"測試部-1551928957533","loc":"study8001"}]· 測試數據增加:http://localhost/consumer/dept/add?dname=WEB測試

?

總結

以上是生活随笔為你收集整理的SpringCloud 搭建项目环境、创建 Dept 微服务、客户端调用微服务的全部內容,希望文章能夠幫你解決所遇到的問題。

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