SpringClude核心组件之Eureka

在这里插入图片描述
通过代码来实现一个案例:

  1. 搭建一个Eureka Server
    首先通过Idea的Spring Initializr插件创建一个SpringBoot项目
    在这里插入图片描述
    依赖选择为web和Eureka Server
    在这里插入图片描述
    项目创建完成之后进去到启动类,添加注解@EnableEurekaServer开启注册中心。
    在这里插入图片描述
    在application.properties文件中添加配置信息
    在这里插入图片描述
    在hosts文件中添加一行
    在这里插入图片描述
    启动Eureka Server,就可以在浏览器中查看注册中心的状态。
    在这里插入图片描述
  2. 搭建提供服务的order
    创建一个新的Spring Boot项目,依赖选择 web和DEureka Discovery
    在启动类中添加注解@EnableEurekaClient开启注册中心
    在这里插入图片描述
    写一个Controller来提供对应的服务
@Controller
@RequestMapping("order")

public class TestController {

    @Value("${server.port}")
    private String port;

    @RequestMapping("create")
    @ResponseBody
    public  String create(String name){

        return "order create successful ,name="+name+" ,port="+port;
    }
}

在application.properties文件中添加配置信息
在这里插入图片描述
启动order,浏览器中会出现新注册的服务
在这里插入图片描述
3. 搭建一个需要获取order服务的customer
创建一个新的Spring Boot项目,依赖选择 web和DEureka Discovery
在启动类中添加注解@EnableEurekaClient开启注册中心
写一个Controller来通过微服务调用

@Controller
@RequestMapping("test")
public class Test {
    @Autowired
    private DiscoveryClient discoveryClient;

    @RequestMapping("testv1")
    @ResponseBody
    public String testOrderWithEurake() throws Exception{
        List<ServiceInstance>  instanceList=discoveryClient.getInstances("order");
        ServiceInstance serviceInstance=instanceList.get(0);
        String host=serviceInstance.getHost();
        String port=serviceInstance.getPort()+"";
        String url="http://"+host+":"+port+"/order/create?name=张三";

        HttpClient httpClient=new DefaultHttpClient();
        HttpPost httpPost=new HttpPost(url);
        HttpResponse response=httpClient.execute(httpPost);
        String res="";
        if (response.getStatusLine().getStatusCode()==200){
            res=EntityUtils.toString(response.getEntity());
        }

        return res;
    }

    //负载均衡
    @Bean
    @LoadBalanced
    public  RestTemplate resTemplate(){
        return new RestTemplate();
    }

    @Autowired
    RestTemplate restTemplate;
    @RequestMapping("testv2")
    @ResponseBody
    public String testOrderWithRestTemplate() throws Exception {
         return restTemplate.getForObject("http://order/order/create?name=李四",
                String.class,"");

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值