轉自 https://blog.csdn.net/u012702547/article/details/77823434
這個系列我感覺真的太好了,可以一步一步的瞭解spring cloud 的搭建以及更深層次的東西,對想學這門技術的朋友真的入門特別的快,感謝這位大哥的分享,我也會持續的更新過來。
創建服務註冊中心
先新建一個最簡單的Spring Boot項目,命名爲eureka-server,普通到什麼程度呢?就是一個starter都不需要添加,創建成功之後就只引用了一個父starter。
添加Eureka依賴
工程創建成功之後,向pom.xml文件中添加eureka-server的依賴,目前eureka的穩定版本是Dalston.SR3
,添加完依賴之後,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">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sang</groupId>
<artifactId>eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>eureka-server</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</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>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</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>Dalston.SR3</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>
</project>
啓動一個服務註冊中心
啓動一個服務註冊中心的方式很簡單,就是在Spring Boot的入口類上添加一個@EnableEurekaServer
註解,如下:
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
配置服務註冊中心
最後我們再做一點簡單的配置就可以了,配置就寫在Spring Boot的配置文件application.properties中,寫法如下:
server.port=1111
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
測試
OK,做完這一切之後,我們就可以啓動這一個Spring Boot 服務,服務啓動成功之後,在瀏覽器中輸入:http://localhost:1111就能夠看到如下頁面:
OK,看到上面這個頁面之後,表示你的服務註冊中心已經搭建好了。
註冊服務提供者
OK,那麼現在服務註冊中心有了之後,我們可以考慮向這個服務註冊中心註冊一個服務提供者了。
創建一個新的Spring Boot工程
還是創建一個Spring Boot工程,這次創建比之前創建多一個步驟,在創建的時候選中web的starter,我們來創建一個web工程,在IntelliJ IDEA中創建的時候選中web,如下:
添加Eureka依賴
在創建好的工程中,我們需要添加Eureka依賴,添加方式如下:
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sang</groupId>
<artifactId>provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>provider</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</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>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
創建應用的入口
這是一個web工程,所以我們添加一個Controller,在該Controller中提供一個訪問入口,如下:@RestController
public class HelloController {
private final Logger logger = Logger.getLogger(getClass());
@Autowired
private DiscoveryClient client;
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String index() {
List<ServiceInstance> instances = client.getInstances("hello-service");
for (int i = 0; i < instances.size(); i++) {
logger.info("/hello,host:" + instances.get(i).getHost() + ",service_id:" + instances.get(i).getServiceId());
}
return "Hello World";
}
}
這裏創建服務之後,在日誌中將服務相關的信息打印出來。激活Eureka中的DiscoveryClient
在Spring Boot的入口函數處,通過添加@EnableDiscoveryClient註解來激活Eureka中的DiscoveryClient實現(因爲我們在HelloController中注入了DiscoveryClient)。
@EnableDiscoveryClient
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
配置服務名稱和註冊中心地址
最後的最後,我們在application.properties文件中配置一下服務名和註冊中心地址即可,如下:
spring.application.name=hello-service
eureka.client.service-url.defaultZone=http://localhost:1111/eureka
測試
做完這一切之後,我們就可以來測試了,直接運行這個Spring Boot工程,運行成功之後,我們刷新剛纔的http://localhost:1111,就可以看到有一個服務已經註冊成功了。如下:
親測成功!還沒有入門的朋友可以跟着這個,方便進一步理解spring cloud。