最近时间比较充裕,决定来学习一下spring cloud。
首先要了解spring cloud是什么,spring cloud是基于spring boot的一个搭建分布式系统的工具集, 它可以帮你快速的搭建一个分布式系统。相对来说比较简单易上手,学习spring cloud之前要对spring boot有一定的了解和掌握。
接下来我们搭建一个简单的spring cloud 环境的搭建,
1· 我们可以先建一个spring boot的项目,然后引入依赖。
<?xml version="1.0" encoding="UTF-8"?>
<name>springCloudDemo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!--
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
-->
</project>
2· 引入依赖后开始写配置文件:
server:
port: 8761
eureka:
instance:
hostname: localhost #你的地址
client:
register-with-eureka: false # 表示是否注册自身到eureka服务器,
fetch-registry: false #fetch-registry 表示是否从eureka服务器上获取注册信息
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
# defaultZone就比较重要了,是设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址。
3·在启动类上加上@EnableEurekaServer注解
然后就可以启动eureka服务了,
4·下面再建一个spring boot项目,导入依赖。只要把spring-cloud-starter-netflix-eureka-server修改为spring-cloud-starter-netflix-eureka-client即可,其他依赖都没有改变。
5·客户端的配置文件
6·在客户端的启动类上加上@EnableEurekaClient注解,然后就可以启动客户端了。启动完成之后刷新一下eureka服务器端 ,
如图,说明客户端向服务器端注册成功。
接下来要使用restTemplate 时间服务器之前的调用。因为每个客户端都在服务器端注册了,所以我们在访问其他客户端时,可以使用restTemplate 来进行调用,也十分的方便。
首先建一个restTemplate的工具类。
注意:当你调用地址想用你注册时候的name时,必须加@LoadBalanced注解。这样然后就可以使用restTemplate了。
如:
当访问 /getString时 就会跳转到 CLIENTDEMO的 /getName
这样就可以随意跳转到 注册到服务器端的任何一个客户端了。