通常来讲,Intelij IDEA 能够经过 Maven Archetype 来快速生成Maven项目,其实 IDEA 集成了 Spring 官方提供的 Spring Initializr,能够很是方便的建立 Maven 项目,并且能自动生成启动类和单元测试代码。java
下面咱们学习如何快速搭建一个 Spring Cloud 工程,示例使用 Spring Boot 2.2.2 版本,使用少许的代码,能够在半小时内完成项目的搭建。web
本文为新手向教程,帮助你们快速入门 Spring Cloud 开发,也做为「跟我学 Spring Cloud Alibaba」系列的补充文章,文章会在公众号「架构进化论」进行首发更新,欢迎关注。spring
1.建立一个新工程,选择maven,点击下一步浏览器
2.填写项目相关的信息,进到下一步架构
3.填写项目名和项目位置,命名为 spring cloud demo,点击 finishapp
4.这样咱们就建立好了一个普通项目,该项目是做为一个Parent project存在的,能够直接删除src文件maven
1.在项目上右键-->new-->module-->Spring Initializr-->nextspring-boot
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 文件。
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>
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://EUREKA-PRODUCER/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 ,经过引导,在脚手架中建立本身的项目,导入到开发工具中,感兴趣的同窗能够去试下。