SpringBoot整合SpringCloud

时间:2020-8-28 作者:admin


Spring Cloud : 是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

本文主要讲的是整合方面的东西,所以springcloud讲的不深

1.创建一个空项目,里面加入下面的子模块:

SpringBoot整合SpringCloud

  • eureka-server,只需要勾选下面的场景:
    SpringBoot整合SpringCloud
    然后创建一个application.yml,写下面的配置内容:
server:
  port: 8761
eureka:
  instance:
    hostname: eureka-server  # eureka实例的主机名
  client:
    register-with-eureka: false  #不将自己注册到eureka上
    fetch-registry: false  #不从eureka上来获取服务的注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/

然后在springBoot的启动类上标明下面的注解:
SpringBoot整合SpringCloud
然后启动springBoot,然后浏览器地址栏上访问http://localhost:8761/
即可看到下面的可是化的注册中心(由于还没注册服务,所以下面红色框框那个地方自然是空的)
SpringBoot整合SpringCloud

  • provider-ticket 和 consumer-user 都需要下面的依赖:
    SpringBoot整合SpringCloud

先说provider-ticket:

在application.yml中写下面的配置:

server:
  port: 8001

spring:
  application:
    name: provider-ticket

eureka:
  instance:
    prefer-ip-address: true   #注册服务的时候使用服务的ip地址
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

书写下面的service:

package org.lzl.providerticket.service;

import org.springframework.stereotype.Service;

@Service
public class TicketService  {

    public String getTicket(){
        System.out.println("8001");
        return "卢泽龙最帅!";
    }

}

再书写下面的controller:

package org.lzl.providerticket.controller;

import org.lzl.providerticket.service.TicketService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TicketController {
    @Autowired
    TicketService ticketService;

    @GetMapping("/ticket")
    public String getTicket(){
        return ticketService.getTicket();
    }

}

然后启动这个springboot模块,这这个服务就被注册进去了。

consumer-user:

application.yml的配置信息如下:

spring:
  application:
    name: consumer-user

server:
  port: 8200

eureka:
  instance:
    prefer-ip-address: true   #注册服务的时候使用服务的ip地址
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

启动类加入下面的注解和bean:
SpringBoot整合SpringCloud
controller如下:

package org.lzl.consumeruser.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class UserController {

    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/buy")
    public String buyTicket(String name){
        String s = restTemplate.getForObject("http://PROVIDER-TICKET/ticket",String.class); //第一参数写注册的服务名 第二个参数指定放返回的参数类型
        return name+"告诉我:"+s;
    }

}

然后也启动这个springboot的模块。

注上面三个模块都启动了,再看http://localhost:8761/ 页面
SpringBoot整合SpringCloud

已经可以看到两个服务的信息了。

测试远程调用:访问http://localhost:8200/buy?name=zs
看到如下的结果则说明成功:
SpringBoot整合SpringCloud

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。