zoukankan      html  css  js  c++  java
  • springcloud前言(服务提供者和服务消费者)

    最后的目录结构就是这样

    image

    1、新建父工程 kaka-springcloud-kuang

    1. 创建一个普通maven项目(不需要选择archetype,然后把相应的groupId和artifactId写上);

    image

    1. 添加maven依赖,由于是父工程,那么直接管理maven版本即可(引入需要的依赖)。
    <?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>com.zhang</groupId>
        <artifactId>kaka-springcloud-kuang</artifactId>
        <version>1.0-SNAPSHOT</version>
        <modules>
            <module>springcloud-api</module>
            <module>springcloud-provider-dept-8001</module>
            <module>springcloud-consumer-dept-80</module>
        </modules>
        <packaging>pom</packaging>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Hoxton.SR8</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>2.3.3.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.47</version>
                </dependency>
                <dependency>
                    <groupId>com.alibaba</groupId>
                    <artifactId>druid</artifactId>
                    <version>1.1.10</version>
                </dependency>
                <dependency>
                    <groupId>org.mybatis.spring.boot</groupId>
                    <artifactId>mybatis-spring-boot-starter</artifactId>
                    <version>1.3.2</version>
                </dependency>
                <dependency>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-core</artifactId>
                    <version>1.2.3</version>
                </dependency>
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.12</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                    <version>1.2.12</version>
                </dependency>
                <dependency>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok</artifactId>
                    <version>1.18.20</version>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </project>
    

    2、新建 springcloud-api

    1. 创建一个普通maven项目(同上);

    2. 引入需要的依赖

    <?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>kaka-springcloud-kuang</artifactId>
            <groupId>com.zhang</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>springcloud-api</artifactId>
    
        <!--当前的module自己需要的依赖,如果父依赖中已经配置了版本,这里就不用写了。-->
        <dependencies>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
        </dependencies>
    </project>
    
    1. 创建Dept.java
    package com.zhang.springcloud.pojo;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import lombok.experimental.Accessors;
    
    import java.io.Serializable;
    
    /**
     * @auther kaka
     * @create 2021-04-02 22:06
     */
    @Data
    @NoArgsConstructor
    @Accessors(chain = true)//开启链式写法
    public class Dept implements Serializable {
    
        private Long deptno;
        private String dname;
        /**
         * 这个数据是存在哪个数据库的字段,微服务,
         * 一个服务对应一个数据库,同一个信息可能存在不同的数据库
         */
        private String db_source;
    
        public Dept(String dname) {
            this.dname = dname;
        }
    }
    

    3、新建服务提供者 springcloud-provider-dept-8001

    1. 创建一个普通maven项目(同上);

    2. 引入依赖(不需要添加版本号,因为父工程已经管理版本号);

    <?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>kaka-springcloud-kuang</artifactId>
            <groupId>com.zhang</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>springcloud-provider-dept-8001</artifactId>
    
        <dependencies>
            <dependency>
                <groupId>com.zhang</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>
                <optional>true</optional>
                <scope>true</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jetty</artifactId>
            </dependency>
        </dependencies>
    </project>
    
    1. 编写application.yml;
    spring:
      devtools:
        restart:
          enabled: true
          additional-paths: src/main/java,src/main/resources
      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/db01?useUnicode=true&characterEncoding=utf-8&useSSL=false
        username: root
        password: love123
    
    server:
      port: 8001
    
    mybatis:
      type-aliases-package: com.zhang.springcloud.pojo
      config-location: classpath:mybatis/mybatis-config.xml
      mapper-locations: classpath:mybatis/mapper/*.xml
    
    1. 目录结构如下;
      image

    2. 编写DeptMapper.java;

    @Mapper
    @Repository
    public interface DeptMapper {
    
        boolean addDept(Dept dept);
        Dept queryById(Long id);
        List<Dept> queryAll();
    }
    
    1. 编写DeptServiceImpl.java;
    @Service
    public class DeptServiceImpl implements DeptService{
    
        @Autowired
        private DeptMapper deptMapper;
        @Override
        public boolean addDept(Dept dept) {
            return deptMapper.addDept(dept);
        }
    
        @Override
        public Dept queryById(Long id) {
            return deptMapper.queryById(id);
        }
    
        @Override
        public List<Dept> queryAll() {
            return deptMapper.queryAll();
        }
    }
    
    1. 编写DeptController.java;
    @RestController
    @RequestMapping("/dept")
    public class DeptController {
    
        @Autowired
        private DeptService deptService;
    
        @PostMapping("/add")
        public boolean addDept(@RequestBody Dept dept){
            return deptService.addDept(dept);
        }
    
        @GetMapping("/get/{id}")
        public Dept getDept(@PathVariable("id") Long id){
            return deptService.queryById(id);
        }
    
        @GetMapping("/list")
        public List<Dept> queryAll(){
            return deptService.queryAll();
        }
    }
    
    1. 测试访问以下;
      image

    4、新建服务消费者 springcloud-consumer-dept-80

    1. 前几步省略;

    2. maven依赖;

    <?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>kaka-springcloud-kuang</artifactId>
            <groupId>com.zhang</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>springcloud-consumer-dept-80</artifactId>
    
        <dependencies>
            <dependency>
                <groupId>com.zhang</groupId>
                <artifactId>springcloud-api</artifactId>
                <version>1.0-SNAPSHOT</version>
            </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>
                <optional>true</optional>
                <scope>true</scope>
            </dependency>
        </dependencies>
    </project>
    
    1. application.yml只配置端口即可;

    2. 注入RestTemplate,为了调用服务端;

    @Configuration
    public class ConfigBean {
    
        @Bean
        public RestTemplate getRestTemplate(){
            return new RestTemplate();
        }
    }
    
    1. 编写ConsumerController.java;
    @RestController
    @RequestMapping("/consumer")
    public class DeptConsumerController {
    
        /**
         * 需要提前配置bean
         */
        @Autowired
        private RestTemplate restTemplate;
    
        private static final String REST_URL_PREFIX = "http://localhost:8001/";
    
        @RequestMapping("/get/{id}")
        public ResponseEntity<Dept> get(@PathVariable("id") Long id){
            return restTemplate.getForEntity(REST_URL_PREFIX + "/dept/get/"+id,Dept.class);
            //return restTemplate.getForObject(REST_URL_PREFIX + "/dept/get/"+id,Dept.class);
        }
    
        @RequestMapping("/add")
        public ResponseEntity<Boolean> add(Dept dept){
            return restTemplate.postForEntity(REST_URL_PREFIX + "/dept/add",dept,Boolean.class);
            //return restTemplate.postForObject(REST_URL_PREFIX + "/dept/add",dept,Boolean.class);
        }
    
        @RequestMapping("/list")
        public ResponseEntity<List> list(){
            return restTemplate.getForEntity(REST_URL_PREFIX + "/dept/list",List.class);
            //return restTemplate.getForObject(REST_URL_PREFIX + "/dept/list",List.class);
        }
    }
    
    1. 目录结构;
      image

    2. 测试访问;
      image

    =============================================================================
    至此restful服务端和客户端搭建成功。

  • 相关阅读:
    SqlMap入门
    本地文件上载到Docker容器
    CentOS7 安装Docker-ce
    windows10 子系统(WSL) 文件位置
    慕课网-安卓工程师初养成-5-1 编程练习
    慕课网-安卓工程师初养成-4-14 Java 循环语句之多重循环
    慕课网-安卓工程师初养成-4-13 练习题
    慕课网-安卓工程师初养成-4-12 Java循环跳转语句之 continue
    慕课网-安卓工程师初养成-4-11 Java循环跳转语句之 break
    慕课网-安卓工程师初养成-4-10 练习题
  • 原文地址:https://www.cnblogs.com/kaka-qiqi/p/14615440.html
Copyright © 2011-2022 走看看