SpirngCloud搭建Eureka
1. 創建新項目
1.1新建一個maven項目

1.2 輸入groupid:com.hewow和artifactid:springcloud-erreka


1.3然后finish
1.4新建項目的目錄結構如下,其中src文件夾我們用不上,可以選擇刪除

2.搭建注冊中心
2.1新建一個module項目,在maven項目下右鍵,新建module,選擇Spring Initializr,並命名為server-center,如下圖所示:

2.2后面依然是填寫GroupId和ArtifactId,后續選擇如下圖:

勾選spring cloud discovery--》eureka server然后next到finish
第一次創建spring-cloud-eureka項目需要下載一些jar包,時間稍長,等待即可。
2.3創建完成后修改配置
創建模塊結束之后,修改applications.properties
#eureka注冊中心 #端口號 server.port=8761
eureka.instance.hostname=localhost #表示十分將自己注冊到Eureka Server,默認為true。由於當前應用就是Eureka Server,故而設為false。 eureka.client.register-with-eureka=false #表示是否從Eureka Server獲取注冊信息,默認為true。因為這是一個單點的Eureka Server,不需要同步其他 的Eureka Server節點的數據,故而設為false eureka.client.fetch-registry=false #置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址,默認是http://localhost:8761/eureka;多個地址可用,分隔 eureka.client.service-url.default-zone=http://${eureka.instance.hostname}:${server.port}/eureka/ |
修改SpringCloudEurekaApplication類文件為下:
package com.buou.springcloudeureka;
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer @SpringBootApplication public class SpringCloudEurekaApplication {
public static void main(String[] args) { SpringApplication.run(SpringCloudEurekaApplication.class, args); }
} |
其中@EnableEurekaServer是聲明這是一個Eureka注冊中心
2.4至此,關於一個EurekaServer的注冊中心配置已經完成,啟動該Application,可以在控制台看到日志信息,同時,可以在瀏覽器輸入“127.0.0.1:8761”,出現如下界面:

看到上圖所示即代表啟動成功,可以看到“No instances available”,因為還沒有創建服務提供者。
3.搭建服務提供-order
3.1.新建module “server-order”
這里考慮到后續會添加很多服務,因此使用order后綴區別,當然用戶可以自定義其他的名字。創建的過程和上述創建是一致的,這里不再贅述。
3.2.修改配置applications.properties
添加如下內容:
#eureka-client #端口號 server.port=8082
eureka.instance.hostname=localhost #置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址,默認是http://localhost:8761/eureka;多個地址可用,分隔 eureka.client.service-url.default-zone=http://localhost:8761/eureka/
spring.application.name=service-order |
Spring.application.name代表這個服務提供者的名字,用來區分其他服務;
eureka.client.service-url.default-zone是服務中心的地址
3.3.修改ServerOrderApplication類
添加@EnableEurekaClient注解
package com.hewow.serverorder;
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@EnableEurekaClient @SpringBootApplication public class ServerOrderApplication {
public static void main(String[] args) { SpringApplication.run(ServerOrderApplication.class, args); }
} |
注冊中心和服務提供者的區別就在於注解的不同。
3.4.新建一個Controller類
首先在ServerOrderApplication同級目錄下新建一個包“controller”,在controller包下面建立一個OrderController類,OrderController類的內容如下:
package com.hewow.serverorder.controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;
@RestController public class OrderController {
@RequestMapping("getOrder") @GetMapping public String getOrder(){ return "order-001"; }
} |
3.5.測試服務是否可用
測試server-order(前提是注冊中心已啟動),首先啟動服務后,在這冊中心看到注冊了一個服務,如下圖:

在瀏覽器輸入“127.0.0.1:8082/getOrder”直接訪問該服務,顯示信息如下圖所示:

服務提供創建完成。
4.搭建服務消費-user
上述過程實現了從瀏覽器直接訪問一個服務的過程,但如何通過一個微服務訪問另外一個微服務呢?下面創建一個服務消費者以調用剛才的微服務。
4.1.新建module模塊,命名為“server-user”,過程同上
4.2修改配置文件application.propeties
#eureka-client #端口號 server.port=8083
eureka.instance.hostname=localhost #置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址,默認是http://localhost:8761/eureka;多個地址可用,分隔 eureka.client.service-url.default-zone=http://localhost:8761/eureka/
spring.application.name=service-user |
雖然是服務消費者,但其本身也是一個服務提供者,因此需要在服務注冊中心注冊。可以看到這里更換了一個端口號,同時更改了服務的名字,若新建其他服務可類似更改。
4.3.修改ServerUserApplication
package com.hewow.serveruser;
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate;
@EnableEurekaClient @SpringBootApplication public class ServerUserApplication {
@Bean //注入restTemplate @LoadBalanced //在注冊中心里進行查找微服務,Ribbon負載均衡 //生成一個RestTemplate實例對象 //使用user服務調用order服務就是通過這個restTemplate對象實現的 public RestTemplate restTemplate(){ return new RestTemplate(); }
public static void main(String[] args) { SpringApplication.run(ServerUserApplication.class, args); }
} |
同樣這里要添加注解@EnableEurekaClient表明自己是Eureka-Client的身份;這里注入了一個resttemplate用來進行后續的服務調用。
4.4.添加UserController
同理,新建包並新建UserController類,內容如下
package com.buou.springcloudclientuser.com.buou.user.controller;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate;
@RestController public class UserController {
@Autowired private RestTemplate restTemplate;
@RequestMapping("getUserOrder") public String getUserOrder(){ String url="http://service-order/getOrder"; //返回值類型和我們的業務返回值一致 return restTemplate.getForObject(url, String.class); } } |
4.5.測試該服務
啟動該服務,刷新注冊中心,可以看到多了一個服務:
在瀏覽器中輸入“127.0.0.1:8083/getUserOrder”,出現界面如下:

可以發現成功調用了order服務並返回了結果,實現了server-user服務調用server-order服務的操作。服務消費者本身又是服務提供者。