您的位置:首页 > 科技 > 能源 > 网络公司产品_重庆app下载注册_sem是什么意思中文_在线网站流量查询

网络公司产品_重庆app下载注册_sem是什么意思中文_在线网站流量查询

2024/10/7 6:37:50 来源:https://blog.csdn.net/qq_30166465/article/details/142522482  浏览:    关键词:网络公司产品_重庆app下载注册_sem是什么意思中文_在线网站流量查询
网络公司产品_重庆app下载注册_sem是什么意思中文_在线网站流量查询

文章目录

    • 一、准备
    • 二、主要工作
    • 三、建立dto类
    • 四、添加多个feign接口
    • 五、测试
    • 六、目录结构
      • 6.1 父工程`service-demo`
      • 6.2 `order-service`模块
      • 6.3 `product-service`模块
      • 6.4 `sd-api`模块

一、准备

将上一篇的目录结构改造一下:

  • 修改包名使根路径分别为com.hdl.ordercom.hdl.product
  • 修改项目名为service-demo,(先后在项目结构、pom文件、pc文件管理器中修改)
  • 修改将@EnableFeignClients注解移动到order-service,谁用谁就要开启

如下
在这里插入图片描述

到这里,feign服务能成功访问。

二、主要工作

  • 建立新模块 sd-api
    • 建立根路径包名com.hdl.api
    • com.hdl.api下建立client.order包和client.product,用来存放order和product模块的feign接口;建立config包,用来存放配置类,建立dto包,用来存放dto对象
    • 将其它包下的feign接口移动到com.hdl.api.client下的对应包
    • 引入spring-cloud-starter-openfeignspring-cloud-loadbalancer依赖,同时删掉其它模块下的这两个依赖
    • config包下建立FeignConfig类,主要目的是开启@EnableFeignClients
    • resource下建立META-INF/spring.factories,加载FeignConfig到ioc容器中
  • 修改需要用到feign接口的order-service模块
    • 移除对product-service模块的依赖, 引入sd-api依赖
    • 删掉@EnableFeignClients
    • 删掉spring-cloud-starter-openfeignspring-cloud-loadbalancer依赖

到这里,抽取就完成了,目录结构如下
在这里插入图片描述

三、建立dto类

建立dto类,测试feign接口为对象、返回值为对象时的场景

  • sd-api模块下com.hdl.api.dto包,建立ProductDTO类,需要有gettersetter,否则feign接口收到的对象全为null值
  • product-service模块下com.hdl.product.pojos.dto包,建立ProductDTO类,需要有gettersetter,否则controller接口会报406
@Data
public class ProductDTO{Integer id;String name;Integer price;
}

四、添加多个feign接口

  • 修改product-service的controller方法
  • 修改sd-api的feign接口
  • 修改order-service的调用feign接口的方法
    在这里插入图片描述

五、测试

3个feign接口都正常
在这里插入图片描述

六、目录结构

6.1 父工程service-demo

实际上order-serviceproduct-service高度重合,还可以抽取出一个模块作为它们的父模块,打包方式为pom

在这里插入图片描述
pom.xml

<?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>org.example</groupId><artifactId>service-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>order-service</module><module>product-service</module><module>sd-api</module></modules><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-boot.version>2.7.18</spring-boot.version><spring-cloud.version>2021.0.8</spring-cloud.version><spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version><spring-framework.version>5.3.33</spring-framework.version></properties><!-- 依赖声明--><dependencyManagement><dependencies><!-- SpringFramework的依赖配置--><dependency><groupId>org.springframework</groupId><artifactId>spring-framework-bom</artifactId><version>${spring-framework.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringCloud 微服务 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringCloud Alibaba 微服务 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringBoot 依赖配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!-- bootstrap 启动器 SpringBoot2.4之后不会默认加载bootstrap.yaml 所以要引入这个依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins><pluginManagement><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></pluginManagement></build><repositories><repository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases></repository></repositories><pluginRepositories><pluginRepository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories>
</project>

6.2 order-service模块

忽略掉sentinel的配置,那是后面的内容

在这里插入图片描述
pom.xml

<?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><parent><groupId>org.example</groupId><artifactId>service-demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>order-service</artifactId><description>order-service服务</description><dependencies><!-- feign远程调用模块--><dependency><groupId>org.example</groupId><artifactId>sd-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- nacos服务注册与发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- nacos 配置中心 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency></dependencies>
</project>

6.3 product-service模块

在这里插入图片描述

pom.xml

<?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><parent><groupId>org.example</groupId><artifactId>service-demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>product-service</artifactId><description>product-service服务</description><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- nacos服务注册与发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- nacos 配置中心 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
</project>

6.4 sd-api模块

在这里插入图片描述
pom.xml

<?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><parent><groupId>org.example</groupId><artifactId>service-demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>sd-api</artifactId><description>feign远程调用模块</description><dependencies><!-- feign接口需要的包--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!-- feign接口需要--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
</project>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com