SpringCloud-第一章(1)、SpringCloud构建消费者与提供者工程

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。SpringCloud-第一章(1)、SpringCloud构建消费者与提供者工程,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、新建数据库表,并填写测试数据

在这里插入图片描述

二、创建父级工程

1、创建Maven工程

在这里插入图片描述

2、工程名字microservicecloud

在这里插入图片描述

3、pom.xml文件中添加依赖

<properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
     <java.version>11</java.version>
     <maven.compiler.source>11</maven.compiler.source>
     <maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR4</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.3.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.31</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</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.17</version>
        </dependency>
    </dependencies>
</dependencyManagement>

三、创建api工程

1、选择父级工程 新建Maven Module模块

模块名字:microservicecloud-api
在这里插入图片描述

2、创建包及Dept.java类

在这里插入图片描述

3、Dept.java类的内容

package com.boxue.springcloud.entities;

import java.io.Serializable;

public class Dept implements Serializable {
    private long deptno;
    private String dname;
    private String db_source;
  //提供get、set、toString方法
}

4、将该工程打包等待使用

在这里插入图片描述

四、创建提供者工程

1、选择父级工程 新建Maven Module模块

模块名字:microservicecloud-provider-dept-8001
在这里插入图片描述

2、pom.xml文件添加依赖

<dependencies>
    <!--  引入自己定义的api通用包,可以使用Dept部门Entity  -->
    <dependency>
        <groupId>com.boxue.springcloud</groupId>
        <artifactId>microservicecloud-api</artifactId>
        <version>${project.version}</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</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-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>

</dependencies>

3、resources文件夹下创建application.yml文件

在这里插入图片描述

4、application.yml文件内容

server:
  port: 8001
  
mybatis:
  config-location: classpath:mybatis/mybatis.cfg.xml        # mybatis配置文件所在路径
  type-aliases-package: com.boxue.springcloud.entities    # 所有Entity别名类所在包
  mapper-locations:
  - classpath:mybatis/mapper/**/*.xml                       # mapper映射文件
    
spring:
   application:
    name: microservicecloud-dept #该名字很重要,是对外暴露的微服务的名字
   datasource:
    type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型,类似JDBC的注册驱动
    driver-class-name: com.mysql.cj.jdbc.Driver              # mysql驱动包
    url: jdbc:mysql://127.0.0.1:3306/cloudDB01?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8              # 数据库名称
    username: root
    password: '@hxd99999'
    dbcp2:
      min-idle: 5                                           # 数据库连接池的最小维持连接数
      initial-size: 5                                       # 初始化连接数
      max-total: 5                                          # 最大连接数
      max-wait-millis: 200                                  # 等待连接获取的最大超时时间

5、在resources文件夹下创建mybatis文件夹,并创建mybatis的配置文件及映射文件

在这里插入图片描述

6、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>

   <settings>
      <setting name="cacheEnabled" value="true" /><!-- 二级缓存开启 -->
   </settings>

</configuration>

7、DeptMapper.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="com.boxue.springcloud.dao.DeptDao">

   <select id="findById" resultType="Dept" parameterType="Long">
      select deptno,dname,db_source from dept where deptno=#{deptno}
   </select>
   <select id="findAll" resultType="Dept">
      select deptno,dname,db_source from dept
   </select>
   <insert id="addDept" parameterType="Dept">
      INSERT INTO dept(dname,db_source) VALUES(#{dname},DATABASE())
   </insert>

</mapper>

8、创建java文件包结构及启动类

在这里插入图片描述

9、启动类DeptProvider8001.java类的内容

package com.boxue.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DeptProvider8001_App {

   public static void main(String[] args) {
      // TODO Auto-generated method stub
      SpringApplication.run(DeptProvider8001_App.class, args);
   }
}

10、创建包中对应的类

在这里插入图片描述

11、DeptDao.java接口内容

package com.boxue.springcloud.dao;

import com.boxue.springcloud.entities.Dept;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface DeptDao {
    public boolean addDept(Dept dept);

    public Dept findById(Long id);

    public List<Dept> findAll();
}

12、DeptService.java接口内容

package com.boxue.springcloud.service;

import java.util.List;

import com.boxue.springcloud.entities.Dept;

public interface DeptService {
   public boolean add(Dept dept);
   
   public Dept get(Long id);
   
   public List<Dept> list();
}

13、DeptServiceImpl.java类内容

package com.boxue.springcloud.service.impl;

import java.util.List;

import com.boxue.springcloud.dao.DeptDao;
import com.boxue.springcloud.entities.Dept;
import com.boxue.springcloud.service.DeptClientService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class DeptServiceImpl implements DeptClientService {
   
   @Autowired
   private DeptDao dao;

   @Override
   public boolean add(Dept dept) {
      // TODO Auto-generated method stub
      return dao.addDept(dept);
   }

   @Override
   public Dept get(Long id) {
      // TODO Auto-generated method stub
      return dao.findById(id);
   }

   @Override
   public List<Dept> list() {
      // TODO Auto-generated method stub
      return dao.findAll();
   }

}

14、DeptController.java类内容

package com.boxue.springcloud.controller;

import com.boxue.springcloud.entities.Dept;
import com.boxue.springcloud.service.DeptClientService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class DeptController {
    @Autowired
    private DeptClientService service;

    @RequestMapping(value = "/dept/add", method = RequestMethod.POST)
    public boolean add(@RequestBody Dept dept)
    {
        return service.add(dept);
    }

    @RequestMapping(value = "/dept/get/{id}", method = RequestMethod.GET,produces = "application/json;charset=utf-8")
    public Dept get(@PathVariable("id") Long id)
    {
        return service.get(id);
    }

    @RequestMapping(value = "/dept/list", method = RequestMethod.GET,produces = "application/json;charset=utf-8")
    public List<Dept> list()
    {
        return service.list();
    }
}

15、测试

启动8001工程

访问地址:127.0.0.1:8001/dept/get/1
在这里插入图片描述
测试成功

五、创建消费者工程

1、选择父级工程 新建Maven Module模块

模块名字:microservicecloud-consumer-dept-90
在这里插入图片描述

2、pom.xml添加依赖

<dependencies>
    <dependency>
        <!--  自己定义的api  -->
        <groupId>com.boxue.springcloud</groupId>
        <artifactId>microservicecloud-api</artifactId>
        <version>${project.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

3、在resources文件夹中创建application.yml文件

在这里插入图片描述

4、application.yml文件内容

server:
  port: 90
spring:
  application:
    name: microservicecloud-dept-90 #该名字很重要,是对外暴露的微服务的名字

5、创建包及启动类

在这里插入图片描述

6、启动类DeptConsumer90_App.java的内容

package com.boxue.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DeptConsumer90_App {
   public static void main(String[] args) {
      SpringApplication.run(DeptConsumer90_App.class,args);
   }
}

7、在对应的包下创建类

在这里插入图片描述

8、ConfigBeans.java里的内容

package com.boxue.springcloud.cfgbeans;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
//springboot时使用applicationContext.xml配置
//现在使用该注解就具备配置功能
public class ConfigBeans {
   @Bean
   public RestTemplate getRestTemplate(){
      //RestTemplate初始化查找提供者中的service的工具
      //该工具可以通过地址等参数找到提供者中的service接口
      //从而获取service提供的数据
      return new RestTemplate();
   }
}

9、DeptController_Consumer.java类里的内容

package com.boxue.springcloud.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import com.boxue.springcloud.entities.Dept;

@RestController
public class DeptController_Consumer {
   //创建提供者地址的常量
   //暴露的是另外的地址,实际底层干活的是8001
   private static final String REST_URL_PREFIX = "http://127.0.0.1:8001";
   @Autowired
   private RestTemplate restTemplate;
   /**
    * restTemplate是spring提供的用于访问Rest服务的客户端模板工具
    * 使用restTemplate访问restful接口非常简单、方便
    * 该对象的功能方法有三个参数
    * (url,requestMap,RestponseBean.class)
    * 请求地址,请求参数,HTTP响应转换成的对象类型
    * */
   @RequestMapping(value="/consumer/dept/add")
   public boolean add(Dept dept){
      //通过REST对象调用访问提供者的功能方法
      //REST_URL_PREFIX+"/dept/add" 
      //ip+端口号+service的方法名字
      return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add", dept, Boolean.class);
   }
   @RequestMapping(value = "/consumer/dept/get/{id}")
   public Dept get(@PathVariable("id") Long id)
   {
      //注意:restTemplate调用的方法要与方法含义一致
      return restTemplate.getForObject(REST_URL_PREFIX + "/dept/get/" + id, Dept.class);
   }

   @SuppressWarnings("unchecked")//压制警告注解
   @RequestMapping(value = "/consumer/dept/list")
   public List<Dept> list()
   {
      return restTemplate.getForObject(REST_URL_PREFIX + "/dept/list", List.class);
   }
   
}
 

10、测试

启动8001、90工程

访问地址:http://127.0.0.1:90/consumer/dept/get/1
在这里插入图片描述
测试成功

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/246001.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!