首先创建两个工程,一个接口提供者,一个接口调用者
接口提供者环境准备
1,pom.xml
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<!-- Spring Cloud 版本信息 -->
<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
<!-- Spring Cloud Alibaba 版本信息 -->
<spring.cloud.alibaba.version>2.1.0.RELEASE</spring.cloud.alibaba.version>
</properties>
<!-- 父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencyManagement>
<dependencies>
<!-- Spring Cloud begin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud end-->
<!-- Spring Cloud Alibaba begin-->
<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>
<!-- Spring Cloud Alibaba end -->
</dependencies>
</dependencyManagement>
<dependencies>
<!--SpringMVC-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis-plus begin-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.0</version>
</dependency>
<!--MySQL连接包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
<!-- nacos注册中心依赖包 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 监控检查-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- nacos配置中心依赖支持 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
2,bootstrap.yml
server:
port: 9005
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/myqx?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 1234
application:
name: itcast-map
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848
3,提供接口
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserInfoService userInfoService;
@GetMapping("/get")
public List<UserInfo> findAll() {
List<UserInfo> result = userInfoService.findAll();
return result;
}
}
我这里只暴露了配置和接口,细节上就是CURD的简单接口实现,不必关注,知道调通了就行
4,启动本地的nacos,没有nacos的移步到这里进行安装
服务调用者环境准备
1,pom.xml
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<java.version>1.8</java.version>
<latest.version>0.2.10</latest.version>
<!-- Spring Cloud 版本信息 -->
<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
<!-- Spring Cloud Alibaba 版本信息 -->
<spring.cloud.alibaba.version>2.1.0.RELEASE</spring.cloud.alibaba.version>
</properties>
<!-- 父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencyManagement>
<dependencies>
<!-- Spring Cloud begin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud end-->
<!-- Spring Cloud Alibaba begin-->
<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>
<!-- Spring Cloud Alibaba end -->
</dependencies>
</dependencyManagement>
<dependencies>
<!--SpringMVC-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--工具包-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
<!-- restTemplate 远程调用 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.5</version>
</dependency>
<!-- nacos注册中心依赖包 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 监控检查-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- nacos配置中心依赖支持 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- feign调用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
2,bootstrap.yml
server:
port: 9013
spring:
application:
name: itcast-nacos
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848
3,启动类
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients // 开启远程调用
public class NacosApplication {
public static void main(String[] args) {
SpringApplication.run(NacosApplication.class, args);
}
}
4,UserFeign
@FeignClient(value = "itcast-map",fallback = UserHystrix.class)
public interface UserFegin {
@GetMapping("user/get")
public List<UserInfo> findAll();
}
@FeignClient的使用方式,这里不详说了啊,fallback回调的意思(熔断器)
5,UserHystrix
@Component
public class UserHystrix implements UserFegin {
@Override
public List<UserInfo> findAll() {
return null;
}
}
6,UserController
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private RestTemplate restTemplate;
@Autowired
private UserFegin userFegin;
/**
* 参数
* @return
*/
@GetMapping("/test006")
public String feignClien() {
List<UserInfo> all = userFegin.findAll();
System.out.println(all);
return "myqxin";
}
7,启动两个项目服务,看到你的服务说明成功注册到nacos
请求:http://localhost:9013/user/test006 ,效果如下
注意事项:
1,配置用application.yml不用bootstrap.yml,则可能出现以下异常
2,关于springboot的版本,与nacos版本对不上,则可能出现以下异常
版权声明:本文为qq_45752401原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。