1.nacos是阿里巴巴研发的一个集注册中心与配置中心于一体的管理平台,使用其他非常的简单。下载地址为:
https://github.com/alibaba/nacos/releases
2.其中默认的登录名和密码是:nacos/nacos
1.创建maven父工程 springcloud-alibaba-microservice-manager ,修改 pom.xml 文件,添加如下代码:
<packaging>pompackaging>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.2.9.RELEASEversion>
<relativePath/>
parent>
2.创建子工程 springcloud-alibaba-microserivce-commons ,创建 User 类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer uid;
private String username;
}
3.创建子工程 springcloud-alibaba-microservice-provider-7070 ,修改 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">
<parent>
<artifactId>springcloud-alibaba-microservice-manager</artifactId>
<groupId>com.qf</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>springcloud-alibaba-microservice-provider-7070</artifactId>
<dependencies>
<dependency>
<groupId>com.wei</groupId>
<artifactId>springcloud-alibaba-microserivce-commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
3.在 resources 目录下创建 application.yml
spring:
application:
# 服务提供方的名称
name: microservice-provider
cloud:
nacos:
discovery:
enabled: true
server-addr: 127.0.0.1:8848
server:
port: 7070
4.在子工程 springcloud-alibaba-microservice-provider-7070中,创建 MicroServiceProvider 类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class MicroServiceProvider {
public static void main(String[] args) {
SpringApplication.run(MicroServiceProvider.class,args);
}
}
5.创建 UserController
import com.qf.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
@RestController
@RequestMapping("provider-user")
public class UserController {
@RequestMapping("findAll")
public List findAll(){
return Arrays.asList(new User(1001,"jack"),new User(1002,"tom"));
}
}
1.创建子工程 springcloud-alibaba-microservice-consumer-8080,修改 pom.xml 文件,添加如下代码:
<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">
<parent>
<artifactId>springcloud-alibaba-microservice-managerartifactId>
<groupId>com.qfgroupId>
<version>1.0-SNAPSHOTversion>
parent>
<modelVersion>4.0.0modelVersion>
<artifactId>springcloud-alibaba-microservice-consumer-8080artifactId>
<dependencies>
<dependency>
<groupId>com.weigroupId>
<artifactId>springcloud-alibaba-microserivce-commonsartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-alibaba-dependenciesartifactId>
<version>2.2.1.RELEASEversion>
<type>pomtype>
<scope>importscope>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>Hoxton.SR6version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
project>
2.在 resources 目录下创建 application.yml
spring:
application:
# 服务消费方的名称
name: microservice-consumer
cloud:
nacos:
discovery:
enabled: true
server-addr: 127.0.0.1:8848
server:
port: 8080
4.在子工程 springcloud-alibaba-microservice-consumer-8080中,创建 MicroServiceConsumer类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
public class MicroServiceConsumer {
public static void main(String[] args) {
SpringApplication.run(MicroServiceConsumer.class,args);
}
}
5.创建 WebConfig
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class WebConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
6.创建 UserController
import com.qf.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.List;
@RestController
@RequestMapping("consumer-user")
public class UserController {
@Autowired
private DiscoveryClient discoveryClient;
@Autowired
private RestTemplate restTemplate;//用于发送网络请求
@RequestMapping("getUsers")
public List<User> getUsers(){
//通过服务提供方的名称拿到服务,由于服务提供方可能是集群,所以使用List封装:每一个服务封装成一个ServiceInstance
List<ServiceInstance> serviceInstances = discoveryClient.getInstances("microservice-provider");
ServiceInstance serviceInstance = serviceInstances.get(0);//获取服务
String host = serviceInstance.getHost();//获取主机名
int port = serviceInstance.getPort();//获取端口号
String url = "http://"+host+":"+port+"/provider-user/findAll";
List<User> users = (List<User>)restTemplate.getForObject(url, List.class);
return users;
}
}
分别启动服务方以及消费方,然后访问:http://localhost:8080/consumer-user/getUsers 进行测试
也可在nacos上查看注册的服务。