Spring Cloud简介

Spring Cloud是一个分布式的整体解决方案。Spring Cloud为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全局琐, leader选举,分布式session,集群状态)中快速构建的工具,使用Spring Cloud的开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。

Spring Boot整合Spring Cloud

打开IDEA,创建一个空工程。

spring boot 集成 ldap springboot集成springcloud_spring boot 集成 ldap


spring boot 集成 ldap springboot集成springcloud_微服务_02

接下面再通过Spring Initializr分别创建三个模块:注册中心、生产者、消费者。

spring boot 集成 ldap springboot集成springcloud_Spring Cloud_03


spring boot 集成 ldap springboot集成springcloud_Spring Cloud_04

先是我们的第一个模块:eureka注册中心,为其添加一个Eureka Server依赖。

spring boot 集成 ldap springboot集成springcloud_Cloud_05

接着是我们的第二个模块:生产者,为其添加Web和Eureka Discovery依赖

spring boot 集成 ldap springboot集成springcloud_spring boot 集成 ldap_06


spring boot 集成 ldap springboot集成springcloud_Spring Boot_07

再创建最后一个模块:消费者,所需依赖和生产者相同,就不赘述了。

spring boot 集成 ldap springboot集成springcloud_微服务_08


三个模块都创建好了就像上面图片那样。要注意三个模块都是在同级的目录的。

spring boot 集成 ldap springboot集成springcloud_Spring Cloud_09


spring boot 集成 ldap springboot集成springcloud_Cloud_10


spring boot 集成 ldap springboot集成springcloud_Spring Boot_11

接下来配置每一个模块,首先是注册中心模块:

注册中心相关文件

application.properties
server.port = 8000
spring.application.name = eureka-server
eureka.client.service-url.defaultZone = http://localhost:8000/eureka
EurekaServerApplication.java
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

运行该模块,访问http://localhost:8000,即可访问Eureka的注册中心。

spring boot 集成 ldap springboot集成springcloud_Spring Cloud_12

生产者模块相关文件

application.properties

server.port = 8100
spring.application.name = provider
eureka.instance.prefer-ip-address = true
eureka.client.service-url.defaultZone = http://localhost:8000/eureka

ProviderController.java
@RestController
public class ProviderController {

    @GetMapping("hello")
    public String SayHello() {
        return "Hello!";
    }

}

消费者模块相关文件

application.properties

server.port = 8200
spring.application.name = consumer
eureka.instance.prefer-ip-address = true
eureka.client.service-url.defaultZone = http://localhost:8000/eureka

ConsumerApplication.java
@SpringBootApplication
@EnableDiscoveryClient // 启用服务发现功能
public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }

    @LoadBalanced // 使用负载均衡机制,如果有多个生产者,轮询每个每产者。
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
ConsumerController.java
@RestController
public class ConsumerController {

    @Autowired
    RestTemplate restTemplate;

    @GetMapping("greet")
    public String greet(String name) {
    	// 这里消费者的名字必须用大写
        String str = restTemplate.getForObject("http://PROVIDER/hello", String.class);
        return str + " " + name;
    }

}

最后,把这三个模块都运行起来,访问http://localhost:8000/,即可看到当前注册到注册中心的三个实例

spring boot 集成 ldap springboot集成springcloud_Spring Cloud_13

接着再访问http://localhost:8200/greet?name=James,应该就能看到如下的输入了。

spring boot 集成 ldap springboot集成springcloud_Spring Boot_14