导包
父项目 pom.xml
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<java.version>1.8</java.version>
<!-- springboot的版本 -->
<spring-boot.version>2.3.2.RELEASE</spring-boot.version>
<!-- springcloud的版本 -->
<spring-cloud.version>Hoxton.SR9</spring-cloud.version>
<!-- alibaba推出springcloud的对应版本 -->
<spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
</properties>
<!-- 项目打包方式 -->
<packaging>pom</packaging>
<dependencyManagement>
<dependencies>
<!-- spring boot依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring-cloud依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- alibaba推出的spring-cloud依赖的父依赖 -->
<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>
</dependencies>
</dependencyManagement>
consumer项目 pom.xml文件
<dependencies>
<!-- springboot core 启动依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- springboot web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- alibaba-nacos注册中心客户端支持依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- feign组件 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
provider项目 pom.xml文件
<dependencies>
<!-- springboot core 启动依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- springboot web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- alibaba-nacos注册中心客户端支持依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
application.yml配置文件(consumer和provider通用)
server:
port: 8180
spring:
# 设置应用名称-它将作为nacos中备份的名字(实际上会备份应用名称和实际ip)
application:
name: test-consumer
cloud:
# nacos注册中心地址和账号、密码
nacos:
discovery:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
为要访问的提供者进行注册
// 里面的value是注册中心备份的应用名称
@FeignClient(value="test-provider")
public interface TestProviderService {
// 对应的是要访问的提供者的访问类型和路径和参数
@PostMapping("test1")
public String test1(@RequestParam("msg")String msg);
// 对应的是要访问的提供者的访问类型和路径和参数
@PostMapping("2")
public Integer test2(@RequestParam("number")Integer number);
}
消费者访问层
@RestController
@RequestMapping("test")
public class TestController {
@Resource
private TestProviderService testProviderService;
@PostMapping("hello")
public Object hello(String msg){
System.out.println(">>> hello");
System.out.println("msg:" + msg);
String str = testProviderService.test1(msg);
return str;
}
@PostMapping("/index")
public Integer index(Integer number){
System.out.println(">>> index");
System.out.println("index:" + number);
Integer str = testProviderService.test2(number);
return str;
}
}
提供者访问层
@RestController
public class TestProviderController {
//注入service对象
@PostMapping("test1")
public String test1(@RequestParam("msg") String msg){
System.out.println(">>> test1");
System.out.println("msg:" + msg);
return "hello feign!!!";
}
@PostMapping("2")
public Integer test2(@RequestParam("number") Integer numder){
System.out.println(">>> test1");
System.out.println("msg:" + numder);
return numder;
}
}
启动类
// feign组件注解
@EnableFeignClients
// springboot启动类注解
@SpringBootApplication
// 启用springcloud注册中心客户端
@EnableDiscoveryClient
public class Consumerapplication {
public static void main(String[] args) {
SpringApplication.run(Consumerapplication.class,args);
}
}
访问(consumer层改进)
@RestController
@RequestMapping("test")
public class TestController {
// 将注册好的提供者注入进来
@Resource
private TestProviderService testProviderService;
@PostMapping("hello")
public Object hello(String msg){
System.out.println(">>> hello");
System.out.println("msg:" + msg);
// 进行对提供者的访问路径是:注册提供者时写的路径,参数依次传递
String str = testProviderService.test1(msg);
return str;
}
@PostMapping("/index")
public Integer index(Integer number){
System.out.println(">>> index");
System.out.println("index:" + number);
// 进行对提供者的访问路径是:注册提供者时写的路径,参数依次传递
Integer str = testProviderService.test2(number);
return str;
}
}