新手向,十分钟快速创建 Spring Cloud 项目

简介: 本文为新手向教程,帮助大家快速入门 Spring Cloud 开发,也作为「跟我学 Spring Cloud Alibaba」系列的补充文章

本文为新手向教程,帮助大家快速入门 Spring Cloud 开发,也作为「跟我学 Spring Cloud Alibaba」系列的补充文章,文章会在公众号「架构进化论」进行首发更新,欢迎关注。

一般来说,Intelij IDEA 可以通过 Maven Archetype 来快速生成Maven项目,其实 IDEA 集成了 Spring 官方提供的 Spring Initializr,可以非常方便的创建 Maven 项目,而且能自动生成启动类和单元测试代码。

下面我们学习如何快速搭建一个 Spring Cloud 工程,示例使用 Spring Boot 2.2.2 版本。

创建一个新工程

1.创建一个新工程,选择maven,点击下一步

2.填写项目相关的信息,进到下一步

3.填写项目名和项目位置,命名为 spring cloud demo,点击 finish

4.这样我们就创建好了一个普通项目,该项目是作为一个Parent project存在的,可以直接删除src文件夹

添加 EurekaServer 子项目

1.在项目上右键-->new-->module-->Spring Initializr-->next

2.填写项目相关信息,这里命名为 eureka-server,进入下一步

3.选择Cloud Discovery-->Eureka Server,下一步

4.填写项目名和项目位置等,完成

5.IDEA会自动生成Application类,添加@EnableEurekaServer,该注解表明标注类是一个Eureka Server

6.修改配置,切换启动端口,默认生成的项目配置文件是 application.properties,这里我替换成application.yml

# 服务注册中心 (单节点)
server:
  port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    fetch-registry: false # 表示是否从Eureka Server获取注册信息,默认为true.因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,这里设置为false
    register-with-eureka: false # 表示是否将自己注册到Eureka Server,默认为true.由于当前应用就是Eureka Server,故而设置为false.
    service-url:
      # 设置与Eureka Server的地址,查询服务和注册服务都需要依赖这个地址.默认是http://localhost:8761/eureka/;多个地址可使用','风格.
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

eureka的配置信息可以查看 org.springframework.cloud.netflix.eureka. EurekaClientConfigBean ,参考源码了解含义。

7.启动项目,在浏览器中输入http://localhost:8761/ ,访问Eureka控制台,服务正常启动

8.如果启动报错,配置文件未生效,检查下 target 目录下是否正确引用了 application.yml 文件。

添加 EurekaProducer 服务生产者

1.按照同样的方式,创建一个项目,这里我们创建一个Spring Boot风格的服务,创建时需要勾选 Spring Cloud Discover--> Eureka Discover Client 和 Spring Web 的依赖。

2.在application启动类中加入注解@EnableEurekaClient,表明自己属于一个生产者。这里为了方便测试,直接使用@RestController获取返回值。

3.修改配置,注册到Eureka Server。

server:
  port: 8765

spring:
  application:
    name: eureka-producer

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka # 指定服务注册中心

4.启动应用,刷新Eureka控制台,可以看到服务已经注册到Eureka上

5.如果启动有问题,检查是否缺少Spring Boot web的依赖包,可以尝试添加如下配置:

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

创建 Eureka Consumer 服务消费者

1.通过 Spring Initializr,创建一个 Eureka Discovery Client 模块,同时要勾选加入Spring Web依赖。


2.修改原有配置,指定服务注册中心,这里还是使用yml文件。

server:
  port: 8763

spring:
  application:
    name: eureka-consumer

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka # 指定服务注册中心

2.在启动类中添加@EnableDiscoveryClient表明标注类是消费者,加入restTemplate来消费相关的服务。

@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {

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

    @Bean
    @LoadBalanced
    RestTemplate restTemplate()
    {
        return new RestTemplate();
    }

}

3.创建controller层,消费远程服务

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;
import org.springframework.web.client.RestTemplate;

@RestController
public class DemoController {

    @Autowired
    RestTemplate restTemplate;

    @RequestMapping("greet")
    public String sayHello(@RequestParam String name){

        return restTemplate.getForObject("http://service-hello/sayHello?param=" + name, String.class);
    }
}

4.配置完毕以后,启动服务消费者,刷新Eureka控制台,可以看到消费者已经注册。

5.打开浏览器输入localhost:{server.port}/path 进行服务调用,这里我用 http://localhost:8763/greet?name=eureka ,可以看到请求正确返回,正确调用了服务提供者。

总结

本文通过IDEA的插件,快速创建了一个基于Eureka进行服务发现的Spring Cloud工程实例。
除了集成插件,也可以直接访问 http://start.spring.io ,通过引导,在脚手架中创建自己的项目,导入到开发工具中,感兴趣的同学可以去试下。

目录
相关文章
|
1月前
|
负载均衡 Java API
Spring Cloud 面试题及答案整理,最新面试题
Spring Cloud 面试题及答案整理,最新面试题
133 1
|
1月前
|
Java Nacos Sentinel
Spring Cloud Alibaba 面试题及答案整理,最新面试题
Spring Cloud Alibaba 面试题及答案整理,最新面试题
198 0
|
1月前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
141 0
|
6天前
|
负载均衡 Java 开发者
细解微服务架构实践:如何使用Spring Cloud进行Java微服务治理
【4月更文挑战第17天】Spring Cloud是Java微服务治理的首选框架,整合了Eureka(服务发现)、Ribbon(客户端负载均衡)、Hystrix(熔断器)、Zuul(API网关)和Config Server(配置中心)。通过Eureka实现服务注册与发现,Ribbon提供负载均衡,Hystrix实现熔断保护,Zuul作为API网关,Config Server集中管理配置。理解并运用Spring Cloud进行微服务治理是现代Java开发者的关键技能。
|
7天前
|
Java API 对象存储
对象存储OSS产品常见问题之使用Spring Cloud Alibaba情况下文档添加水印如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
24 2
|
11天前
|
JSON 前端开发 Java
统一异常处理:让Spring Boot项目异常更优雅
统一异常处理:让Spring Boot项目异常更优雅
23 1
|
21天前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。
|
22天前
|
开发框架 负载均衡 Java
Spring boot与Spring cloud之间的关系
总之,Spring Boot和Spring Cloud之间的关系是一种构建和扩展的关系,Spring Boot提供了基础,而Spring Cloud在此基础上提供了分布式系统和微服务架构所需的扩展和工具。
17 4
Spring boot与Spring cloud之间的关系
|
1月前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
63 1
|
1月前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
197 0