SpringCloud环境搭建过程之Rest使用小结

目录
  • Rest环境搭建
  • provider-服务端提供者
  • consumer-消费者

今天来到SpringCloud的学习,我们从spring boot微服务阶段,学习到了用springboot去创建很多的微服务,但是这么多微服务我们如果去管理,以及相互之间的联系呢?

而到了我们学习springcloud阶段,其实相对而言是变简单的,不需要写很多代码以及什么操作,主要就是接收思想,了解其中的机制,而springCloud项目基于springboot项目,只需要几行简单的配置即可开始使用;

那来到了我们最熟悉的官网:https://spring.io/

进入spring cloud的学习,可以去读读这里的话,我读懂了,不告诉你

从springcloud的学习,我们可以看这张图,我们学习这里面几个部分

Rest环境搭建

环境说明:jdk1.8,idea2019,maven3.6.X,springcloud最新版2021.0.3,mybatis-plus

我们首先搭建一个父工程项目,创建一个空的普通的maven项目,我们直接把src目录删除掉,pom文件写下面的使用父工程管理依赖,这里都是与文章日期最新依赖。

<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>
    <junit.version>4.12</junit.version>
    <log4j.version>1.2.17</log4j.version>
    <lombok.version>1.18.24</lombok.version>
    <springcloud-version>2021.0.3</springcloud-version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <!--springcloud依赖-->
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${springcloud-version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- springboot依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.7.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.11</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</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>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
<build>
    <!--父工程的项目名称-->
    <finalName>springcloud</finalName>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                <!--以$开头结尾 符合在src/main/resources路径下面访问到 主要是yml文件或者properties文件-->
                <delimiters>
                    <delimit>$</delimit>
                </delimiters>
            </configuration>
        </plugin>
    </plugins>
</build>

有了父工程项目,我们再准备一个数据库环境,写一个api类,这里我们新建一个简单的账户表,往里面插入几条简单的数据

DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
  `account_id` int(11) NOT NULL,
  `account_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `account_pwd` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  PRIMARY KEY (`account_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of account
-- ----------------------------
INSERT INTO `account` VALUES ('1', 'zhangsan', '333');
INSERT INTO `account` VALUES ('2', 'lisi', '444');
INSERT INTO `account` VALUES ('3', 'wangwu', '555');
INSERT INTO `account` VALUES ('4', 'zhangliu', '666');
INSERT INTO `account` VALUES ('5', 'qiqi', '777');
INSERT INTO `account` VALUES ('6', 'baba', '888');

新建一个maven普通项目起名叫springcloud-api,里面呢,放一个这样的实体类,与表的关系对应起来的一个简单对象,使用了lombok,这里大家可以自行去了解

1、导入依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

我们可以看到这里如果正确会有一个小圆圈,如果你这里没有,那就要检查下父工程依赖了

2、编写配置,这里没有什么配置,所以就是滤过

3、编写对应代码

provider-服务端提供者

再新建一个maven普通项目模块,我们做服务的提供者

1、导入依赖

<dependencies>
    <dependency>
        <groupId>com.xuexi</groupId>
        <artifactId>springcloud-api</artifactId>
        <version>1.0-SNAPSHOT</version>
    </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>com.baomidou</groupId>
        <artifactId>mybatis-plus-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>
</dependencies>

2、编写配置

新建一个application.yml文件,内容如下:

server:
  port: 8001

spring:
  application:
    name: springcloud-provider-account
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/lianxi?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8
    username: root
    password:
    type: com.alibaba.druid.pool.DruidDataSource  #使用阿里的数据源

# mybatis-plus配置日志
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  type-aliases-package: com.xuexi.pojo
  mapper-locations: classpath:mapper/*.xml
  global-config:
    db-config:
      table-underline: true  #实体类驼峰转下划线,默认就是

3、编写代码,服务提供者我们只需要编写dao层和service层,这里使用了mybaits-plus所以比较简单,直接给大家截图

dao层

service层

这里我们可以编写一个controller进行下测试

@RestController
public class AccountController {

    @Autowired
    AccountService accountService;

    @PostMapping("/account/add")
    public boolean addAccount(Account account){
        return accountService.save(account);
    }

    @GetMapping("/account/get/{id}")
    public Account get(@PathVariable("id") long id){
        return accountService.getById(id);
    }

    @GetMapping("/account/list")
    public List<Account> getAll(){
        return accountService.list(null);
    }
}

测试成功

consumer-消费者

同样的我们再建一个普通的maven子工程项目,我们进行服务的消费

1、导入依赖

<dependencies>
    <dependency>
        <groupId>com.xuexi</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>
    </dependency>

</dependencies>

2、编写配置

新建一个application.yml

server:
  port: 80

3、编写代码

代码编写前,我们认识一个东西,就是我们的标题,REST这个东西,这里我觉得你学到这里应该很容易理解,所以我觉得还是先上代码吧

首先编写一个config配置类,我们把RestTemplate这个对象接管到spring容器中

@Configuration
public class BeanConfig {
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

接着编写我们的消费代码,ConsumerController

@RestController
public class ConsumerController {
    private static final String REST_URL_PREFIX = "http://localhost:8001";
    @Autowired
    RestTemplate restTemplate;

    @PostMapping("/cousumer/add")
    public boolean addAccount(Account account) {
        return restTemplate.postForObject(REST_URL_PREFIX+"/account/add",account,boolean.class);
    }
    @GetMapping("/cousumer/get/{id}")
    public Account get(@PathVariable("id") long id) {
        return restTemplate.getForObject(REST_URL_PREFIX+"/account/get/"+id,Account.class);
    }
    @GetMapping("/cousumer/list")
    public List<Account> getAll() {
        return restTemplate.getForObject(REST_URL_PREFIX+"/account/list",List.class);
    }
}

上面我都没有给大家说编写springboot启动类,别到这里还没启动呀,每一个项目下面,编写一个这样的启动类

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

我们启动下消费方,看下是否可以远程调用服务方服务,测试成功,远程调用了我们的服务消费掉

其实我们都学过网络请求,RestTemplate其实就是封装好的一个请求对象,然后可以通过get|post|delete|put请求,里面也没有多少方法,点以下就都出来了,这么简单,很容易看懂并学会吧!

其实就像前后段分离,发送异步请求,通过不断地请求服务,然后去实现功能,一种直连的方式,对地址和端口请求服务

但是我们可以发现,这样是有缺点的,比如provider宕机了,consumer请求是请求不到了的,而且也不能做一些检测,负载均衡,轮询等方式;那我们接着学习再加一层
下一篇我们尝试下使用Eureka注册中心,持续更新中·····

到此这篇关于SpringCloud环境搭建 --- Rest使用的文章就介绍到这了,更多相关SpringCloud  Rest使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Springcloud seata nacos环境搭建过程图解

    最近学习了一下seata,由于nacos现在也挺火,于是学习了seata注册到nacos,然后集成springcloud 1.nacos配置(自行上官网下载) 将nacos/conf/nacos-mysql.sql导入自己的数据库 2.配置修改nacos/conf/application.properties spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?character

  • SpringCloud基本Rest微服务工程搭建过程

    1. 父工程构建 1.1 Maven项目搭建 环境 版本JDK1.8Maven3.6+Maven模板maven-archetype-size删除父工程src文件 环境 版本 JDK 1.8 Maven 3.6+ Maven模板 maven-archetype-size 删除父工程src文件 1.2 父工程pom文件 回顾: ① Maven中dependencyManagement和dependencies的区别 ​ Maven使用dependencyManagement元素来提供一种管理依赖版本

  • 详解SpringCloud微服务之Rest

    目录 一.什么是RestTemplate? 二.四种请求方式 2.1 GET请求 2.2 POST请求 2.3 PUT请求 2.4 DELETE请求 一.什么是RestTemplate? RestTemplate 是一个HTTP客户端,在Spring Cloud的服务调用方使用它我们可以方便的调用HTTP接口,支持GET.POST.PUT.DELETE等方法. 二.四种请求方式 首先注入Bean对象 @Configuration public class MyConfig { @Bean pub

  • SpringCloud入门实验环境搭建

    微服务 个人理解: 所谓微服务是指每个模块都可以独立完成自己的核心业务,某一个模块的崩溃不影响其他模块的运行, 每个微服务有自己单独的一个数据库 每一个微小的服务组成了一个复杂的软件系统 微服务架构 微服务指的是服务的大小,关注的是完成一个具体的服务(医院的科室) 微服务架构是一种架构模式 ,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相 配合,为用户提供最终价值.一种将一个单一应用程序开发为一组小型服务的方法,每个服务都在其运行 的进程中.(整个医院) 优点: 针对特定服务发布

  • SpringCloud2020版本配置与环境搭建教程详解

    1.maven父子工程搭建 项目使用maven工程搭建,下面是工程的结构图.SpringCloud2020是父工程,仅负责依赖的管理,eureka是注册中心的服务端,testclient是测试的客户端. 1.1 父工程pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu

  • 详解Spring cloud使用Ribbon进行Restful请求

    写在前面 本文由markdown格式写成,为本人第一次这么写,排版可能会有点乱,还望各位海涵.  主要写的是使用Ribbon进行Restful请求,测试各个方法的使用,代码冗余较高,比较适合初学者,介意轻喷谢谢. 前提 一个可用的Eureka注册中心(文中以之前博客中双节点注册中心,不重要) 一个连接到这个注册中心的服务提供者 一个ribbon的消费者 注意:文中使用@GetMapping.@PostMapping.@PutMapping.@DeleteMapping等注解需要升级 spring

  • Nginx+SpringCloud Gateway搭建项目访问环境

    目录 安装Nginx 准备SpringBoot应用 添加网关 现如今的项目开发基本都是微服务方式,导致一个系统中会有很多的服务,每个模块都对应着不同的端口,为了方便访问,通常会让某个服务绑定一个域名,比如商品服务:product.xxx.com:订单服务:order.xxx.com,此时可以使用Nginx来搭建一个域名访问环境,基于前后端分离开发的项目经常会遇到跨域问题,使用Nginx也能轻松解决. 安装Nginx 首先拉取nginx的镜像: docker pull nginx:1.10 然后随

  • SpringCloud环境搭建过程之Rest使用小结

    目录 Rest环境搭建 provider-服务端提供者 consumer-消费者 今天来到SpringCloud的学习,我们从spring boot微服务阶段,学习到了用springboot去创建很多的微服务,但是这么多微服务我们如果去管理,以及相互之间的联系呢? 而到了我们学习springcloud阶段,其实相对而言是变简单的,不需要写很多代码以及什么操作,主要就是接收思想,了解其中的机制,而springCloud项目基于springboot项目,只需要几行简单的配置即可开始使用: 那来到了我

  • SpringCloud Function SpEL注入漏洞分析及环境搭建

    目录 SpringCloud Function 介绍 漏洞环境搭建 SpEL注入 漏洞复现 原理分析 补丁分析 引用 SpringCloud Function 介绍 SpringCloud 是一套分布式系统的解决方案,常见的还有阿里巴巴的Dubbo,Fass(Function As A Service )的底层实现就是函数式编程,在视频转码.音视频转换.数据仓库ETL等与状态相关度低的领域运用的比较多.开发者无需关注服务器环境运维等问题上,专注于自身业务逻辑实现即可. SpringCloud F

  • React入门教程之Hello World以及环境搭建详解

    前言 React 是一个用于构建用户界面的 JavaScript 库.react主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图).关注React也已经很久了,一直没能系统地深入学习,最近准备好好研究一下,并且亲自动手做一些实践. 不管是学习一门语言也好,还是学习一个框架也好,都是从最初的hello world程序开始的,今天我们也来用react写一个hello world出来,了解一下如何编写及运行React. 入门教程及环境搭建 在官方文档中,有一种方式是基于npm的,我

  • Mac OS下PHP环境搭建及PHP操作MySQL常用方法小结

    Mac本地环境搭建 在Mac系统,我们可以使用MAMP Pro (官方网站:https://www.mamp.info/en/)软件来搭建本地服务器.安装好这款软件,网站的目录在 /Applications/MAMP/htdocs 文件夹里,只需将文件放入该文件夹中,就可以通过http://localhost:8888来访问了,或者通过点击如下红色下划线按钮来快速访问站点. mac系统下安装php,两行即可. brew tap josegonzalez/homebrew-php brew ins

  • Angular环境搭建及简单体验小结

    Angular介绍 Angular是谷歌开发的一款开源的web前端框架,诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中. 根据项目数统计angular(1.x .2.x .4.x.5.x.6.x.7.x .8.x.9.x)是现在网上使用量最大的框架. Angular基于TypeScript和react.vue相比 Angular更适合中大型企业级项目. 关于Angular版本,Angular官方已经统

  • SpringBoot系列教程JPA之基础环境搭建的方法

    JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Spring Data JPA是在 Hibernate 基础上封装的一款框架.JPA作为标准,实际上并没有说局限于某个固定的数据源,事实上mysql,mongo, solr都是ok的.接下来我们将介绍下springboot结合jpa 来实现mysql的curd以及更加复杂一点的sql支持 jpa系列教程将包含以下几块 环境搭建 基础的插入.修改.删除

  • Windows 7下Python Web环境搭建图文教程

    最近想尝试一下在IBM Bluemix上使用Python语言创建Web应用程序,所以需要在本地搭建Python Web的开发测试环境. 关于Python的版本 进入Python的网站,鼠标移到导航条上的下载,我们会发现提供两下主版本的下载链接! 这两个之间存在什么差别呢? 个人理解,2.7.x的版本为更加稳定的版本,而3.x的版本则是比较前卫的版本,包含了很多新功能新特性之类的: 但如果想要用Python开发一个新项目,那么该如何选择Python版本呢?大部分Python库都同时支持Python

  • 必须详细与全面的Java开发环境搭建图文教程

    在项目产品开发中,开发环境搭建是软件开发的首要阶段,也是必须阶段,只有开发环境搭建好了,方可进行开发,良好的开发环境搭建,为后续的开发工作带来极大便利. 对于大公司来说,软件开发环境搭建工作一般是由运维来做,然而,对于小公司来说,这个工作就交给开发人员来做了,如开发经理.不管这个工作是交给运维人员做,还是 交给开发人员做,能确定的是:做这件事的人,一定是个资深的人,如此,方可让开发环境稳定运行,从而为后续的开发提供便利. 现实中,只有极少部分开发人员接触服务器(能接触的人,基本都是开发组长及其以

随机推荐