Eureka Server的搭建:
使用IDEA工具
File->New Project->Spring Initializr->next
Next
Next->Next创建即可
修改启动类:
package org.dreamtech.eureka; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
进行配置:
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
# 声明自己是服务端
register-with-eureka: false
fetch-registry: false
# 注册中心地址
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
启动后访问:http://localhost:8761/进入管控台
由于只有服务端没有客户端,这里显示空
Eureka Client客户端的搭建:
正常的创建一个SpringMVC项目:
Controller:
package org.dreamtech.product.controller; import org.dreamtech.product.service.ProductService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api/product") public class ProductController { private final ProductService productService; @Autowired public ProductController(ProductService productService) { this.productService = productService; } @RequestMapping("/list") public Object list(){ return productService.getProductList(); } @RequestMapping("/find") public Object findById(@RequestParam("id") int id){ return productService.findById(id); } }
Service:
package org.dreamtech.product.service; import org.dreamtech.product.domain.Product; import java.util.List; public interface ProductService { List<Product> getProductList(); Product findById(int id); }
package org.dreamtech.product.service.impl; import org.dreamtech.product.domain.Product; import org.dreamtech.product.service.ProductService; import org.springframework.stereotype.Service; import java.util.*; @Service public class ProductServiceImpl implements ProductService { // 模拟DAO层操作 private static final Map<Integer, Product> productDao = new HashMap<>(); static { Product p1 = new Product(1, "iPhone1", 1111, 10); Product p2 = new Product(2, "iPhone2", 2222, 10); Product p3 = new Product(3, "iPhone3", 3333, 10); Product p4 = new Product(4, "iPhone4", 4444, 10); Product p5 = new Product(5, "iPhone5", 5555, 10); Product p6 = new Product(6, "iPhone6", 6666, 10); Product p7 = new Product(6, "iPhone7", 7777, 10); productDao.put(1, p1); productDao.put(2, p2); productDao.put(3, p3); productDao.put(4, p4); productDao.put(5, p5); productDao.put(6, p6); productDao.put(7, p7); } @Override public List<Product> getProductList() { Collection<Product> temp = productDao.values(); return new ArrayList<>(temp); } @Override public Product findById(int id) { return productDao.get(id); } }
商品实体类:
package org.dreamtech.product.domain; import java.io.Serializable; public class Product implements Serializable { //ID private int id; //商品名称 private String name; //商品价格 private int price; //商品库存 private int store; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public int getStore() { return store; } public void setStore(int store) { this.store = store; } public Product(int id, String name, int price, int store) { this.id = id; this.name = name; this.price = price; this.store = store; } }
启动项目,访问:http://localhost:8080/api/product/list
响应如下说明成功:
[{ "id": 1, "name": "iPhone1", "price": 1111, "store": 10 }, { "id": 2, "name": "iPhone2", "price": 2222, "store": 10 }, { "id": 3, "name": "iPhone3", "price": 3333, "store": 10 }, { "id": 4, "name": "iPhone4", "price": 4444, "store": 10 }, { "id": 5, "name": "iPhone5", "price": 5555, "store": 10 }, { "id": 6, "name": "iPhone6", "price": 6666, "store": 10 }, { "id": 6, "name": "iPhone7", "price": 7777, "store": 10 }]
引入Eureka:
server: port: 8771 # 指定注册中心地址 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ # 服务的名称 spring: application: name: product-service
IDEA模拟启动多个服务:
访问:http://localhost:8761/
如果显示如上图,说明搭建成功
如果出现这些红字:Eureka的自我保护,由于网络原因出现无法调用的情况不会剔除服务
比如某个人被困在荒岛上,不能说这个人死了,可能过一段时间他会获救,如果关闭了自我保护,阎王就说你死了,谁都救不了你
关闭自我保护:
server:
enable-self-preservation: false
原文:https://www.cnblogs.com/xuyiqing/p/10861541.html