【Spring Cloud 远程调用】管理员服务系统

  • 个人主页: 程序员爱摸鱼
  • 版权: 本文由【程序员爱摸鱼】原创、在CSDN首发、需要转载请联系博主
  • 如果文章对你有帮助、欢迎关注+点赞+收藏(一键三连)哦
  •  想寻找共同成长的小伙伴,可以互粉哦

文章目录

1. 什么是远程调用

1.1 调用方式

2. 搭建环境

        2.1 创建父项目:daykaohe6_22        

                2.1.1配置pom文件

    2.2 创建子项目:company-data

  2.2 创建子项目:company-http

总结


                                                                        


1. 什么是远程调用

  • 客户端程序通过接口调用服务端程序,并获得该服务返回的数据的过程,称为远程调用。

  • “商品管理系统”调用“用户管理系统”的过程,就是“远程调用”。此时“商品管理系统”相当于模拟“浏览器”。

 【Spring Cloud 远程调用】管理员服务系统_第1张图片

 


1.1 调用方式

  • 常见的远程调用方式有2种:

    • RPC:Remote Produce Call远程过程调用,==自定义数据==格式的远程调用方式。基于原生TCP通信,速度快,效率高。

    • Http:采用http协议远程调用方式,==规定==了数据传输的格式,缺点是消息封装臃肿。现在热门的Rest风格,就可以通过http协议来实现。

  • 常见框架 :

    • RPC常见框架: dubbo、WebService

    • Http常见框架:HttpClient、RestTemplat

区别 HTTP RPC
速度 较慢
难度 简单 复杂
灵活性 灵活,跨平台,跨语言

2. 搭建环境

        2.1 创建父项目:daykaohe6_22        

                2.1.1配置pom文件

 
        org.springframework.cloud
        spring-cloud-build
        2.3.5.RELEASE
    

    
        Hoxton.SR12
        2.2.7-SNAPSHOT
        3.4.0
        1.1.10
        2.7.0
        0.9.0
        2.9.7
    



    
        
            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            

            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring.cloud.version}
                pom
                import
            

            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.2.7.RELEASE
                pom
            

            
            
                com.baomidou
                mybatis-plus-boot-starter
                ${mybatis.plus.starter.version}
            

            
            
                com.alibaba
                druid-spring-boot-starter
                ${durid.starter.version}
            

            
            
                io.springfox
                springfox-swagger2
                ${swagger.version}
            
            
                io.springfox
                springfox-swagger-ui
                ${swagger.version}
            
        
    

    2.2 创建子项目:company-data

  1.  环境
    
        
            
            
                org.springframework.boot
                spring-boot-starter-web
            
    
            
            
                io.springfox
                springfox-swagger2
            
            
                io.springfox
                springfox-swagger-ui
            
    
            
            
                org.projectlombok
                lombok
            
    
            
                com.baomidou
                mybatis-plus-boot-starter
                3.4.0
            
            
            
                mysql
                mysql-connector-java
            
            
            
                org.springframework.boot
                spring-boot-starter-test
            
            
                com.czxy.
                test-mybatis-plus
                1.0-SNAPSHOT
                test
            
    
        
    

  2. application.yml配置文件
    server:
      port: 8081
    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/20220622exam?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
        username: root
        password: 1234
    mybatis-plus:
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  #输出日志
        map-underscore-to-camel-case: true
      global-config:
        db-config:
          table-prefix: t_

  3. 创建javaBean
    package com.czxy.domain;
    
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @TableName("companys")
    public class Companys {
        @TableId
        private  String keyno;
    
        private  String cname;
    
        private  String oper;
    
        private  String industry;
    }
    

  4. 创建CompanysContoller
    @RestController
    @RequestMapping("/companys")
    public class CompanysContoller {
        @Resource
        private CompanysMapper companysMapper;
    
        @GetMapping
        public BaseResult selectAll(){
            List list = companysMapper.selectList(null);
            if(list ==null){
                return  BaseResult.error("查询失败");
            }
            return BaseResult.ok("查询成功",list);
        }
    
        @GetMapping("/{keyno}")
        public BaseResult selectById(@PathVariable("keyno") String keyno){
            Companys companys = companysMapper.selectById(keyno);
            if(companys ==null){
                return  BaseResult.error("查询失败");
            }
            return BaseResult.ok("查询成功",companys);
        }
        @PostMapping
        public BaseResult save(@RequestBody Companys companys){
            int insert = companysMapper.insert(companys);
            if(insert !=1){
                return  BaseResult.error("添加失败");
            }
            return BaseResult.ok("添加成功");
        }
        @DeleteMapping("/{keyno}")
        public BaseResult deleteById(@PathVariable("keyno") String keyno){
            int i = companysMapper.deleteById(keyno);
            if(i !=1){
                return  BaseResult.error("删除失败");
            }
            return BaseResult.ok("删除成功");
        }
    
        @PutMapping
        public BaseResult updata(@RequestBody Companys companys){
            int i = companysMapper.updateById(companys);
            if(i !=1){
                return  BaseResult.error("修改失败");
            }
            return BaseResult.ok("修改成功");
        }
    
    
    }
    

  5. 创建Mapper
    @Mapper
    public interface CompanysMapper extends BaseMapper {
    }

  6. 创建启动类
    @SpringBootApplication
    public class TestCompanyApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(TestCompanyApplication.class,args);
        }
    }

  2.2 创建子项目:company-http

  1. 创建启动类
    @SpringBootApplication
    public class TesthttpApplication {
        public static void main(String[] args) {
            SpringApplication.run(TesthttpApplication.class,args);
        }
    }

  2. 创建javaBean
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Companys {
        private  String keyno;
    
        private  String cname;
    
        private  String oper;
    
        private  String industry;
    }

  3. 创建contoller
    @RestController
    @RequestMapping("/companys")
    public class CompanysContoller {
      @Resource
      private CompanysService companysService;
    
        @GetMapping
        public BaseResult selectAll() {
            List list=companysService.list();
            return BaseResult.ok("查询成功",list);
        }
    
    
        @GetMapping("/{keyno}")
        public BaseResult selectById(@PathVariable("keyno") String keyno){
            BaseResult user = companysService.getById(keyno);
            return  BaseResult.ok("查询成功",user);
        }
        @PostMapping
        public BaseResult save(@RequestBody Companys companys){
            try {
                companysService.insert(companys);
                return BaseResult.ok("添加成功");
            } catch (Exception e) {
                return  BaseResult.error(e.getMessage());
            }
        }
        @DeleteMapping("/{keyno}")
        public BaseResult deleteById(@PathVariable("keyno") String keyno){
            Boolean i = companysService.deleteById(keyno);
            if(i){
                return BaseResult.ok("删除成功");
            }
            return  BaseResult.error("删除失败");
        }
    
        @PutMapping
        public BaseResult updata(@RequestBody Companys companys){
            try {
                companysService.updateById(companys);
                return BaseResult.ok("修改成功");
            } catch (Exception e) {
                return  BaseResult.error(e.getMessage());
            }
        }
    
    
    }
    

  4. 创建service
    package com.czxy.service.impl;
    
    import com.czxy.admin.AdminTest;
    import com.czxy.domain.Companys;
    import com.czxy.service.CompanysService;
    import com.czxy.vo.BaseResult;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    @Service
    @Transactional
    public class CompanysServiceimpl implements CompanysService {
    
        @Resource
        private AdminTest adminTest;
        @Override
        public List list() {
               List list= adminTest.list();
            return list;
        }
    
        @Override
        public BaseResult getById(String keyno) {
            BaseResult userBaseResult = adminTest.selectById(keyno);
            return userBaseResult;
        }
    
        @Override
        public void insert(Companys companys) {
           adminTest.insert(companys);
    
        }
    
        @Override
        public Boolean deleteById(String keyno) {
            Boolean result=adminTest.delete(keyno);
            return result;
        }
    
        @Override
        public void updateById(Companys companys) {
          adminTest.update(companys);
        }
    }
    

  5. 创建admin进行远程调用
    package com.czxy.admin;
    
    import com.czxy.domain.Companys;
    import com.czxy.vo.BaseResult;
    import org.checkerframework.checker.units.qual.C;
    import org.springframework.core.ParameterizedTypeReference;
    import org.springframework.http.HttpMethod;
    import org.springframework.http.ResponseEntity;
    import org.springframework.stereotype.Component;
    import org.springframework.web.client.RestTemplate;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    @Component
    public class AdminTest {
    
        @Resource
        private RestTemplate restTemplate;
    
    
        public List list() {
            String url="http://localhost:8081/companys";
            ResponseEntity entity = restTemplate.getForEntity(url, BaseResult.class);
            List list = (List) entity.getBody().getData();
            return  list;
        }
    
    
        public BaseResult selectById(String keyno) {
            String  url="http://localhost:8081/companys/"+keyno;
            ResponseEntity> resultResponseEntity = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference>() {
            });
            return resultResponseEntity.getBody();
        }
    
        public void insert(Companys companys) {
            String url="http://localhost:8081/companys";
            RestTemplate restTemplate = new RestTemplate();
            ResponseEntity entity = restTemplate.postForEntity(url, companys, BaseResult.class);
            
        }
    
        public Boolean delete(String keyno) {
            String url="http://localhost:8081/companys/"+keyno;
            RestTemplate restTemplate = new RestTemplate();
            restTemplate.delete(url);
            return true;
        }
    
        public void update(Companys companys) {
            String url="http://localhost:8081/companys";
            RestTemplate restTemplate = new RestTemplate();
            restTemplate.put(url,companys,BaseResult.class);
        }
    }
    

最后进行测试

http://localhost:8082/swagger-ui.html#/

   【Spring Cloud 远程调用】管理员服务系统_第2张图片

【Spring Cloud 远程调用】管理员服务系统_第3张图片 

  最后只要能调用到就说明你已经学会了哦~

 

                        


想要了解更多吗?没时间解释了,快来点一点!!!
程序员爱摸鱼
————————————————
版权声明:本文为CSDN博主「程序员爱摸鱼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
https://blog.csdn.net/lcshen1234?type=blog

你可能感兴趣的:(spring,cloud,微服务)