目录

对微服务结构的理解

Consumer:服务消费者

Provider:服务提供者

搭建项目

1. 创建父工程

1.1.导入子类共用的依赖(字类不必导重复的依赖)

1.2.导入SpringCloudAlibaba依赖(注意版本间对应)

2.创建api子工程(存放 Provider 和 Consumer公用的实体类)

2.1.建立包结构

2.2.包结构说明

2.3.定义各包中的类

2.4.在父工程pom文件中添加api坐标

3.创建Consumer子工程

3.1.导入discovery发现服务依赖

3.1.修改配置文件

3.2.创建包结构并编写类

4.创建Provider子工程

4.1.导入数据库相关依赖(mysql + mybatis)

4.2.导入nacos依赖(用于注册服务)

4.3.编写配置文件(添加数据库与nacos配置)

4.4.编写mybatis配置

4.5.创建包结构并编写类

5.注册服务

5.1.启动nacos

5.2.启动Provider

6.服务调用

6.1.启动Consumer

6.2.调用服务



最近学习了一下微服务,然后看了一些微服务项目结构,对微服务有大致的一些理解。

对微服务结构的理解

Consumer:服务消费者

1.处理前端请求

2.根据需求调用Provider提供的服务

3.与前端密切交互,不涉及业务操作

Provider:服务提供者

1.Controller层:给Consumer提供服务调用接口

2.Service层:包含所有业务逻辑,给Controller层提供业务操作

3.Dao层:从数据库获取数据并处理,给Service层提供数据(数据处理只能在dao层!!!Service层只获取数据

 

搭建项目

1. 创建父工程

1.1.导入子类共用的依赖(字类不必导重复的依赖)

1.2.导入SpringCloudAlibaba依赖(注意版本间对应

<!--    导入Spring Cloud依赖    -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR8</version>
            </dependency>
            <!--    导入Spring Cloud Alibaba依赖    -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.1.RELEASE</version>
            </dependency>

2.创建api子工程(存放 Provider 和 Consumer公用的实体类)

2.1.建立包结构

2.2.包结构说明

entity:持久层对象,一个对象对应数据库中某张表的一条记录;各属性与数据库表列对应

dto:根据需求定制,拷贝entity类中需要的属性(不一定是全部属性;可能有多个dto类对应一个entity类);用于网络传输所以需要实现序列化

vo:传给前端的对象,内部包含dto对象、返回信息、状态码;用于网络传输所以需要实现序列化

2.3.定义各包中的类

User类 对应数据库表(我是懒狗不想建新表,用以前的;表结构很乱请见谅)

UserInfDto类 代表只获取用户基本信息(只定义了部分属性)

ResponseVo类

(①一定要加set get方法,否则前端无法解析 一定要加无参构造方法,否则Consumer无法解析);

我是懒狗!!!懒得加状态码了,用boolean标识处理是否成功

2.4.在父工程pom文件中添加api坐标

3.创建Consumer子工程

3.1.导入discovery发现服务依赖

<!--    nacos发现服务    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>

3.1.修改配置文件

改成yml后缀非必须,知识在添加配置时更清晰

3.2.创建包结构并编写类

controller

 

configuration(配置类)

RestTemplate 用于远程调用,用于Consumer调用Provider的服务
@LoadBalanced 该注解必须有,否则无法调用服务

4.创建Provider子工程

4.1.导入数据库相关依赖(mysql + mybatis)

4.2.导入nacos依赖(用于注册服务)

<!--    nacos发现服务    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>

4.3.编写配置文件(添加数据库与nacos配置)

4.4.编写mybatis配置

<?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"/>
        <!-- 允许 JDBC 支持自动生成主键 -->
        <setting name="useGeneratedKeys" value="true"/>
        <!-- 配置默认的执行器 -->
        <setting name="defaultExecutorType" value="REUSE"/>
        <!-- 指定 MyBatis 所用日志的具体实现 -->
        <setting name="logImpl" value="SLF4J"/>
    </settings>

</configuration>

4.5.创建包结构并编写类

controller层

service层

dao层

添加了 mapper 包用于从数据库获取数据

配置文件中各种全类名一定要写对,否则报错了都不知道错在哪

而 repository 进行数据处理操作

数据处理只能在这里哦,绝对不能放进service层

5.注册服务

5.1.启动nacos

5.2.启动Provider

注意此时还没有consumer

6.服务调用

6.1.启动Consumer

6.2.调用服务

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐