SpringCloud02:微服务架构rest模拟环境搭建

news2024/9/22 11:36:08

微服务架构rest模拟环境搭建

  • Rest环境搭建:服务提供者
    • springcloud主模块pom.xml
    • springcloud-api模块
    • springcloud-provider-dept-8001服务提供模块
      • 配置相关
  • Rest环境服务消费者
    • Java编写

Rest环境搭建:服务提供者

springcloud主模块pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
    <artifactId>springCloud</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--打包方式 pom-->
    <packaging>pom</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <junit.version>4.12</junit.version>
        <log4j.version>1.2.17</log4j.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!--springcloud依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--springboot依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.1.4.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--数据库-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.6</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.2.6</version>
            </dependency>
            <!--springboot启动器-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.1</version>
            </dependency>
            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>

            <!--日志和测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logbck-core</artifactId>
                <version>1.2.3</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>

    </build>
</project>

springcloud-api模块

  • pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>springCloud</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springcloud-api</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <!--当前的Module自己需要的依赖,如果父依赖中已经配置了版本,这里就不用写了-->
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
</project>
  • pojo类
@Data
@NoArgsConstructor
@Accessors(chain = true) //链式写法
public class Dept implements Serializable {
    private static final long serialVersionUID = -4073709727912930186L;

    private long deptNo;
    private String dName;

    //这个数据存在哪个数据库的字段 一个服务对应一个数据库,同一个信息可能存在不同的数据库
    private String dbSource;

    public Dept(String dName) {
        this.dName = dName;
    }
}

springcloud-provider-dept-8001服务提供模块

  • pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>springCloud</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springcloud-provider-dept-8001</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <!--配置api module拿到实体类-->
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>springcloud-api</artifactId>
            <version>1.0-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>
        </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-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>
    </dependencies>
</project>

配置相关

  • application.yml
server:
  port: 8001
#mybatis配置
mybatis:
  type-aliases-package: com.api.model
  mapper-locations: classpath:mybatis/mapper/*.xml
  config-location: classpath:mybatis/mybatis-config.xml
#spring配置
spring:
  application:
    name: springcloud-provider-dept
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.gjt.mm.mysql.Driver
    url: jdbc:mysql://localhost:3306/iwmstest?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 123456
  • mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!-- 这个配置使全局的映射器启用或禁用缓存 -->
        <setting name="cacheEnabled" value="true"/>
        <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载 -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="multipleResultSetsEnabled" value="true"/>
        <setting name="useColumnLabel" value="true"/>
        <setting name="defaultExecutorType" value="REUSE"/>
        <setting name="defaultStatementTimeout" value="25000"/>
        <!-- 让控制台打印sql语句,注释掉则没有 -->
        <setting name="logImpl" value="STDOUT_LOGGING" />
        <setting name="logImpl" value="LOG4J"/>
        <setting name="callSettersOnNulls" value="true" />
    </settings>
</configuration>
  • mapper文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD  Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.provider.dao.DeptDao">
    <resultMap id="BaseResultMap" type="com.api.model.Dept" >
        <id column="dept_no" property="deptNo" jdbcType="BIGINT" />
        <result column="dname" property="dName" jdbcType="VARCHAR" />
        <result column="db_source" property="dbSource" jdbcType="VARCHAR" />
    </resultMap>
    <select id="queryById" resultMap="BaseResultMap" parameterType="long">
        select *from dept where dept_no=#{deptNo,jdbcType=BIGINT}
    </select>
    <insert id="addDept" parameterType="com.api.model.Dept">
        insert into dept(dname, db_source)
        values (#{dName},database())
    </insert>
    <select id="queryAll" resultMap="BaseResultMap" resultType="com.api.model.Dept">
        select *from dept
    </select>
</mapper>
  • Java编写

请添加图片描述

Rest环境服务消费者

  • pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>springCloud</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springcloud-consumer-dept-80</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <!--实体类-->
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>springcloud-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>
</project>
  • application.yml
server:
  port: 80

Java编写

  • config配置类
    配置RestTemplate 的bin
@Configuration
public class ConfigBean { //@Configuration --spring applicationContext.xml
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}
  • controller请求
@RestController
public class DeptConsumerController {

    //理解:消费者,不应该有service层
    @Autowired
    private RestTemplate restTemplate; //提供多种便捷访问远程http服务的方法,简单的restFul服务模板

    private static final String RESET_URL_PREFIX="http://localhost:8001";

    @GetMapping("/consumer/dept/{deptNo}")
    public Dept get(@PathVariable("deptNo") Long deptNo){
        return restTemplate.getForObject(RESET_URL_PREFIX+"/dept/"+deptNo,Dept.class);
    }

    @GetMapping("/consumer/list")
    public List<Dept> queryAll(){
        return restTemplate.getForObject(RESET_URL_PREFIX+"/dept/queryAll",List.class);
    }

    @PostMapping("/consumer/dept/add")
    public boolean add(@RequestBody Dept dept){
        return restTemplate.postForObject(RESET_URL_PREFIX+"/dept/add",dept,Boolean.class);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/79741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

让我们看看xargs做了什么事情?

说到xargs,不得不提到 find 和 grep ,当然了少不了管道 | find 和 grep我经常会搞混掉这两个功能很相似的命令的用法,总是会记不太住怎么用,也借此文章加深一下记忆。 find ./xx/xx/ -name abc.v grep -r abc ./* // -r 表示整个目录查找 一般我们会使用find…

[附源码]计算机毕业设计基于Java酒店管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Python Open3D点云配准点对点,点对面ICP(Iterative Closest Point)

Python Open3D点云配准 ICP(Iterative Closest Point&#xff09; 这篇博客将介绍 迭代最近点配准算法(Iterative Closest Point, ICP) 。多年来&#xff0c;它一直是研究和工业中几何注册的支柱。输入是两个点云和一个初始变换&#xff0c;该变换大致将源点云与目标点云对齐。…

g++多文件编译

g windows 多文件编译 文章目录g windows 多文件编译Examplescenario 1scenario 2方法一 使用 先编译&#xff0c;再连接方法二 直接编译 生成结果文件visual code 配置 tasks.json问题 undefined reference to std::__cxx11::basic_string<char, std::charg编译单个文件时&…

Java基础:线程池

第一章 等待唤醒机制 1.1 线程间通信 概念&#xff1a;多个线程在处理同一个资源&#xff0c;但是处理的动作&#xff08;线程的任务&#xff09;却不相同。 比如&#xff1a;线程A用来生成包子的&#xff0c;线程B用来吃包子的&#xff0c;包子可以理解为同一资源&#xff…

【SpringMVC】入门篇:带你了解SpringMVC的执行流程

目录 一、简介 二、环境的搭建 三、快速入门 四、SpringMVC的执行流程 Spring有关的文章已经全部更新完&#xff0c;收录于我的专栏&#x1f449;Spring&#x1f448; 一、简介我们在前边已经学习了Spring的基本使用。从这节开始&#xff0c;我们进行SpringMVC的学习。在学习之…

汇编算数运算指令

目录 加法类指令 加法指令ADD 加进位的加法指令ADC 带进位有啥用呢&#xff1f; 增量指令INC&#xff08;1&#xff09; 减法类指令 减法指令SUB 带借位减法指令SBB 减量指令DEC 比较指令CMP&#xff08;分支程序设计常用&#xff09; 乘法指令 乘法指令MUL和符号整…

职场经验:自动化测试介绍和分类,看这一篇就够了

什么是自动化测试? 自动化测试是软件测试活动中一个重要的分支和组成部分,即利用工具或脚本达到测试目的,没有人工或者极少人工参与的软件测试活动称为自动化测试. 自动化测试的优势有哪些? 方便进行回归测试,当软件的版本发布比较频繁的时候,自动化的效果很明显 自动处理…

全网第三详细tshark使用帮助

一 前言tshark作为wireshark的命令行版本&#xff0c;功能非常强大&#xff0c;可以抓包&#xff0c;数据包分析、提取文件、提取分析后的数据还支持各种格式&#xff0c;可以说一把流量分析的瑞士军刀&#xff0c;如果在低流量的场景&#xff0c;包装下tshark命令&#xff0c;…

查找树莓派ip地址的几种方法

1.环境说明 从上面的图中可以看到树莓派是通过网线和win10电脑相连的&#xff0c;以此来共享win10电脑网络&#xff0c;但是需要在电脑端设置后才能将网络共享出来&#xff0c; 设置方法参考以下链接&#xff1a; 通过一根网线共享网络给另一个电脑或者群辉上网 注意&#xff0…

jQuery 遍历

什么是遍历&#xff1f; jQuery 遍历&#xff0c;意为"移动"&#xff0c;用于根据其相对于其他元素的关系来"查找"&#xff08;或选取&#xff09;HTML 元素。以某项选择开始&#xff0c;并沿着这个选择移动&#xff0c;直到抵达您期望的元素为止。 下图…

dotnet项目使用Cefsharp与Js互相调用函数

1. 背景 最近在一个项目中使用 CefSharp 加载H5页面, 其中一些业务逻辑需要调用 Js 函数, 同时 Js 也会调用一些 native 函数: 这里我们使用官方的demo代码进行添加修改, 修改后的代码在此: DevWiki/CefSharp.MinimalExample - CefSharp.MinimalExample - DevWiki Gitea 2. J…

Allegro如何打开和关闭飞线操作指导

Allegro如何打开和关闭飞线操作指导 Allegro可以打开和关闭飞线,下面介绍如何打开和关闭飞线,具体操作如下 选择display-show rats-all。打开所有nets的飞线 如下图 如果菜单里面添加图标,可以直接点击图标显示所有飞线 选择display-Blank Rats-all关闭所有nets的飞线 …

Spring MVC学习 | 简介HelloWord

文章目录一、Spring MVC简介1.1 MVC回顾1.2 Spring MVC是神魔二、HelloWord2.1 相关文件的准备2.2 创建请求控制器2.3 创建Spring MVC配置文件2.4 测试HelloWord2.4.1 访问首页2.4.2 访问目标页面2.5 执行流程学习视频&#x1f3a5;&#xff1a;https://www.bilibili.com/video…

STM32G4系列存储访问的两个小话题

一、有关CCM访问地址的话题有用过STM32F4系列部分芯片或STM32F334芯片的人&#xff0c;可能知道片内有个CCM【Core Coupled Memory】区域,从芯片系统框图结合文字说明&#xff0c;可以清晰知道这个区域仅能被CPU访问&#xff0c;常用来存放些对执行效率敏感的关键性的代码或数据…

【mmdetection系列】mmdetection之head讲解

目录 1.configs 2.具体实现 3.调用 3.1 注册 3.2 调用 配置部分在configs/_base_/models目录下&#xff0c;具体实现在mmdet/models/*_heads目录下。 这个heads可以是很多个目录下的。 1.configs 我们看下yolox的head吧。 https://github.com/open-mmlab/mmdetection/b…

Web前端开发技术课程大作业:基于HTML+CSS+JavaScript实现校园主题-萍乡田家炳中学校网站(1页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

详细讲解Linux物理内存初始化

说明&#xff1a; Kernel版本&#xff1a;4.14ARM64处理器&#xff0c;Contex-A53&#xff0c;双核使用工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 介绍 让我们思考几个朴素的问题&#xff1f; 系统是怎么知道物理内存的&#xff1f;在内存管理真正初始化之前…

Java项目:SSM实现的校园门户平台网站系统含开题报告与需求分析

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本系统为前后台项目&#xff0c;后台为管理员登录&#xff0c;前台为社团、学生、教师角色登录&#xff1b; 管理员角色包含以下功能&#xff…

对称加密算法(二)(分组密码,Feistel Cipher)

文章目录Traditional Block Cipher StructureStream Ciphers and Block CiphersFeistel CipherReferencesTraditional Block Cipher Structure Stream Ciphers and Block Ciphers 序列密码也称为流密码 (Stream Ciphers)&#xff0c; 它是指每次对数字数据流的一个比特或一个…