SpringCloud microservice-student-consumer-80服务消费者项目建立(四)

news2024/11/15 15:53:02

新建一个服务器提供者module子模块,类似前面建的common公共模块,名称是 microservice-student-consumer-1001

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>com.java1234.springcloud</groupId>
    <artifactId>microservice</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>microservice-student-consumer-80</artifactId>
   
  <dependencies>
      <dependency>
          <groupId>com.java1234.springcloud</groupId>
          <artifactId>microservice-common</artifactId>
         <version>${project.version}</version>
      </dependency>

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

      <!-- 修改后立即生效,热部署 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>springloaded</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>
  </dependencies>
</project>

application.yml配置文件:

server:
  port: 80
  context-path: /

SpringCloudConfig配置类:

package com.java1234.config;
 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
 
/**
 * SpringCloud相关配置
 * @author Administrator
 *
 */
@Configuration
public class SpringCloudConfig {
 
    /**
     * 调用服务模版
     * @return
     */
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}
主要是定义一个bean RestTemplate对象; springcloud消费者,服务提供者之间的交互是http rest方式,比dubbo rpc方式更加灵活方便点;

StudentConsumerController类:

package com.java1234.controller;
 
import java.util.List;
 
import javax.annotation.Resource;
 
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
 
import com.java1234.entity.Student;
 
/**
 * 
 * @author Administrator
 *
 */
@RestController
@RequestMapping("/student")
public class StudentConsumerController {
 
     @Resource
     private RestTemplate restTemplate;
      
     /**
      * 添加或者修改学生信息
      * @param student
      * @return
      */
     @PostMapping(value="/save")
     private boolean save(Student student){
         return restTemplate.postForObject("http://localhost:1001/student/save", student, Boolean.class);
     }
      
     /**
     * 查询学生信息
     * @return
     */
    @SuppressWarnings("unchecked")
    @GetMapping(value="/list")
    public List<Student> list(){
        return restTemplate.getForObject("http://localhost:1001/student/list", List.class);
    }
     
    /**
     * 根据id查询学生信息
     * @return
     */
    @GetMapping(value="/get/{id}")
    public Student get(@PathVariable("id") Integer id){
        return restTemplate.getForObject("http://localhost:1001/student/get/"+id, Student.class);
    }
     
    /**
     * 根据id删除学生信息
     * @return
     */
    @GetMapping(value="/delete/{id}")
    public boolean delete(@PathVariable("id") Integer id){
        try{
            restTemplate.getForObject("http://localhost:1001/student/delete/"+id, Boolean.class);
            return true;
        }catch(Exception e){
            return false;
        }
    }
}


再搞一个启动类StudentConsumerApplication_80:

package com.java1234;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
 
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
public class StudentConsumerApplication_80 {
 
    public static void main(String[] args) {
        SpringApplication.run(StudentConsumerApplication_80.class,args);
    }
}


这里的话 加了特殊配置 排除了 数据源注入,不加的话 会报错,老版本没有这个问题;

我们测试下:

http://localhost/student/list

 

http://localhost/student/get/1


但是这里有个主意点,用postman测试的时候

服务提供端实体接收不到数据,因为是http rest方式交互,这里要求必须加上 @RequestBody

/**
     * 添加或者修改学生信息
     * @param student
     * @return
     */
    @PostMapping(value="/save")
    public boolean save(@RequestBody Student student){
        try{
            studentService.save(student);  
            return true;
        }catch(Exception e){
            return false;
        }
    }


 

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

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

相关文章

01 UML概述

UML概述 (1) 规约系统的制品–UML适用于对所有重要的分析、设 计和实现决策进行详细描述 (2) 构造系统的制品–UML描述的模型可与各种编程语言直接相关联 UML应用范围 (1)可用于对象方法和构件方法&#xff1b; (2)可用于 ●所有应用领域(例如&#xff0c;航空航天、财政、通…

重生之我测阿里云U1实例(通用算力型实例)

官方福利&#xff01;&#xff01;&#xff01;&#xff01;大厂羊毛你确定不薅&#xff1f;&#xff1f;&#xff1f; 参与ECSU实例评测&#xff0c;申请免费体验机会&#xff1a;https://developer.aliyun.com/mission/review/ecsu 参与ECSU实例评测&#xff0c;申请免费体验…

CVPR 2023 | 基于金字塔模型的异常检测方法

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/pdf/2211.11317 0.背景&#xff1a; 工业异常检测旨在发现产品的异常区域&#xff0c;在工业质量检测中发挥着重要作用。在工业场景中&#xff0c;很容易获得大量的正…

阿里云RAM凭据插件应用纪实

官方传送 官方文档传送门 官方源码传送门 记录日期 2023-06-13 背景简介 项目中主要使用了OSS&#xff0c;本文记录在OSS SDK中的使用方法 引入依赖 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactI…

一波未平一波又起!加密市场静候利率决议!美联储将会如何演绎?

过去一周&#xff0c;加密市场主要根据SECvs币安&Coinbase的诉讼案件做出反应&#xff0c;但本周市场行情或将以宏观事件为主导&#xff0c;市场短期内仍看不到明确的方向。 因通胀意外反弹&#xff0c;曾暂停加息的澳大利亚央行、加拿大央行近期宣布继续加息&#xff0c;让…

企业软文投稿流程是怎样的,投稿有什么要求?

随着互联网的快速发展&#xff0c;传统的线下推广已经不再是企业宣传的唯一选择。越来越多的企业开始关注线上平台&#xff0c;尤其是软文投稿。那么&#xff0c;企业软文投稿流程是怎样的&#xff1f;投稿有什么要求呢&#xff1f;本文伯乐网络传媒将为大家详细介绍。 1.确定投…

GORM---高级查询

文章目录 构建Demo数据模型定义数据表 高级查询子查询选择字段排序数量偏移总数Group & Having连接 Pluck扫描 构建Demo数据 模型定义 type Users struct {Id uint64 gorm:"primary_key;NOT NULL"EmailId uint64 gorm:"foreignKey:email_id;referenc…

python + pytest 接口自动化 —— 参数关联

什么是参数关联&#xff1f; 参数关联&#xff0c;也叫接口关联&#xff0c;即接口之间存在参数的联系或依赖。在完成某一功能业务时&#xff0c;有时需要按顺序请求多个接口&#xff0c;此时在某些接口之间可能会存在关联关系。 比如&#xff1a;B接口的某个或某些请求参数是…

高级数据结构-线段树

线段树 线段树树基于分治思想的二叉树&#xff0c;用来维护区间信息(区间和、区间最大值、区间最小值等等)。可以在 O ( l o g n ) O(logn) O(logn)的时间内完成区间信息的查询和修改。 线段树中每个叶子结点存储元素本身&#xff0c;非叶子结点存储区间内元素的统计值 节点数组…

C#多线程Task常见问题(二)

1 多线程临时变量 2 线程安全和锁lock 3 线程安全策略总结 线程安全和锁lock 线程安全问题&#xff1a;一段程序逻辑在单线程中执行和多线程中执行&#xff0c;结果一致说明线程是安全的&#xff1b;如果结果不同说明线程不安全。 同样先看一个例子&#xff1a;分别用主线程…

唯品会宕机惨案,损失超亿元!故障来时如何迅速应对?

01 事件回顾 对于IT工程师来说&#xff0c;宕机并非新鲜话题&#xff0c;经历过一次服务器宕机&#xff0c;职业生涯才“完整”。但如果事故超过 12 小时&#xff0c;或许会直接造成职业生涯“宕机”。 3月29日发生的突发事件&#xff0c;#唯品会App崩了 冲上热搜&#xff0…

最全整理,完整一套WEB/APP/接口测试测试流程,全面覆盖...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 web测试流程 需求…

Java --- springboot3整合redis

目录​​​​​​​ 一、整合redis 1.1、导入pom依赖 1.2、修改springboot配置文件 1.3、代码测试 二、测试访问redis五大常用数据类型 三、自动配置原理 四、定制化 4.1、解决redis存储序列化乱码问题 4.2、redis客户端使用jedis 一、整合redis 1.1、导入pom依赖 …

【考试】2023年5月软件设计师考试感受

前言❤️ 由于考试地点距离住的地方很远&#xff0c;一个南面一个北面&#xff0c;所以BZ选择了提前一天去到考试地点附近&#xff0c;住在考点附近。吃了晚饭后。到住的地方大概9点多&#xff0c;洗漱完&#xff0c;10点左右开始考前过知识点&#xff0c;复习到凌晨3点左右。…

改进的粒子滤波算法及其应用研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【博客660】prometheus默认5min的lookback机制带来查询的影响

prometheus默认5min的lookback机制带来查询的影响 1、prometheus staleness机制 我发过的&#xff1a;【博客616】prometheus staleness对PromQL查询的影响 官方staleness解析 相关文章&#xff1a;do-prometheus-metrics-have-some-sort-of-freshness-lifetime 相关issue…

全面解析数据治理

摘要 数据治理并不是一种简单的操作行为&#xff0c;而是对数据资产管理行使权力和控制的活动集合&#xff0c;是一种管理和保护数据的方法&#xff0c;是确保准确性、完整性、安全性、可靠性和一致性的关键。 通过数据治理&#xff0c;企业可以更好地掌握现有数据&#xff0…

C语言---认识动态内存管理并实现一个动态通讯录:静态通讯录别来沾边

文章目录 前言&#x1f31f;一、为什么存在动态内存分配&#x1f31f;二、动态内存函数的介绍&#x1f30f;2.1.malloc函数free函数&#x1f30f;2.2.calloc函数free函数&#x1f30f;2.3.realloc函数 &#x1f31f;三、常见的动态内存错误&#x1f30f;3.1.对NULL指针的解引用…

SQL(--修改中--)

目录 一、基本介绍 二、常用函数 集合函数 字符串函数 MYSQL的日期和时间函数 SQL重要的内建日期函数 MYSQL重要的内建日期函数 条件判断函数 三、操作 单表查询 多表查询 使用正则表达式查询 添加&#xff1a; 修改&#xff1a; 删除&#xff1a; 四、…

Linux系统实现虚拟内存教程

Linux系统实现虚拟内存有两种方法&#xff1a;交换分区&#xff08;swap分区&#xff09;和交换文件&#xff0c; 一、交换文件 查看内存&#xff1a;free -m , -m是显示单位为MB&#xff0c;-g单位GB free -g 创建一个文件&#xff1a;touch命令用于修改…