使用Spring Cloud搭建服务注册中心
废话不多说 , 直接上代码 , 本文以及以后的各个工程都是基于Springboot搭建 , 希望大家有一点SpringBoot和Maven的基础, 好了 一起搭建吧
1.搭建父工程springcloud-parent
pom文件依赖如下(注意父工程要pom格式的)
<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>com.tianxiaobin</groupId>
<artifactId>springcloud-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springcloud-parent</name>
<description>springcloud微服务的父工程</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- Springboot编译插件 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.搭建服务端工程(eureka)
pom文件依赖如下
<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>com.tianxiaobin</groupId>
<artifactId>springcloud-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>springcloud-eureka-server</artifactId>
<name>microservice-eureka-server</name>
<dependencies>
<dependency>
<!-- eureka的启动包 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
eureka启动类
/**
* @ClassName: EurekaApplication
* @Description: eureka的启动类
* @author: 田晓斌
* @date: 2019年4月17日 下午6:14:45
*/
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
配置服务注册中心
server:
port: 8888 #端口号
eureka:
instance:
hostname: localhost #localhost表示设置该服务注册中心的hostname
client:
register-with-eureka: false #禁止向eureka注册自己
fetch-registry: false #表示不去检索其他的服务
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
测试
做完这一切之后,我们就可以启动这一个Spring Boot 服务,服务启动成功之后,在浏览器中输入:http://localhost:8888就能够看到如下页面:
3.搭建客户端工程
添加pom依赖
<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>com.tianxiaobin</groupId>
<artifactId>springcloud-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>springcloud-eureka-user</artifactId>
<name>user客户端</name>
<dependencies>
<dependency>
<!-- eureka的启动包 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
客户端的启动类
/**
* @ClassName: ClientApplication
* @Description: 客户端的启动类
* @author: 田晓斌
* @date: 2019年4月17日 下午6:23:10
*/
@EnableEurekaClient
@SpringBootApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
客户端的配置文件
server:
port: 8001 #指定实例的端口号
spring:
application:
name: springcloud-eureka-user #指定应用的名称
eureka:
client:
service-url:
defaultZone: http://localhost:8888/eureka #指定eureka服务端地址
instance:
prefer-ip-address: true #是否显示主机的IP
测试
做完这一切之后,我们就可以启动这两个Spring Boot 服务,服务启动成功之后,在浏览器中输入:http://localhost:8888就能够看到如下页面:
我们不难发现上图中已经有user实例注册到eureka中,说明是成功的
4.搭建第二个客户端工程实并实现相互调用
<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>com.tianxiaobin</groupId>
<artifactId>springcloud-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>springcloud-eureka-order</artifactId>
<name>order订单微服务</name>
<dependencies>
<dependency>
<!-- eureka的启动包 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
第二个客户端的启动类
/**
* @ClassName: OrderApplication
* @Description: 客户端的启动类
* @author: 田晓斌
* @date: 2019年4月17日 下午6:23:10
*/
@EnableEurekaClient
@SpringBootApplication
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
}
客户端的配置文件
server:
port: 8002 #指定实例的端口号
eureka:
client:
service-url:
defaultZone: http://localhost:8888/eureka #指定eureka服务端地址
instance:
prefer-ip-address: true #是否显示主机的IP
spring:
application:
name: springcloud-eureka-order #指定应用的名称
Order项目的实体类
@Data // get,set,tostring,hashcode
@AllArgsConstructor // 有参
@NoArgsConstructor // 无参
public class Order {
private String id;
private Double price;
private String receivername;
private String receiveraddress;
private String receiverphone;
}
/**
* @ClassName: OrderController
* @Description: 订单服务的Controller
* @author: 田晓斌
* @date: 2019年4月18日 上午9:06:28
*/
@RestController
public class OrderController {
/**
* 通过id查询订单
*/
@GetMapping("/order/{id}")
public String findOrderById(@PathVariable String id) {
Order order = new Order(id, 8.8, "小明", "北京", "13333333333");
return order.toString();
}
}
在user服务的启动类中注入RestTemplate实例
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
在User服务的Controller中去连接Order服务
/**
* @ClassName: OrderController
* @Description: 订单服务的Controller
* @author: 田晓斌
* @date: 2019年4月18日 上午9:06:28
*/
@RestController
public class OrderController {
/**
* 通过id查询订单
*/
@GetMapping("/order/{id}")
public String findOrderById(@PathVariable String id) {
Order order = new Order(id, 8.8, "小明", "北京", "13333333333");
return order.toString();
}
}
测试
做完这一切之后,我们就可以启动这三个Spring Boot 服务,服务启动成功之后,在浏览器中输入:http://localhost:8888就能够看到如下页面:
接下来访问localhost:8001/findOrdersByUser/1
到这里第一张搭建Eureka服务器成功,完美