spring cloud实例Dome详细搭建
2019-05-17 14:33
417 查看
详解搭建spring cloud的实例Demo,跟着一步一步走,肯定可以的
准备工作:
- 1.首先创建一个父项目,一个普通的java项目
- 2.创建好父项目后,在pom.xml中配置springcloud和springboot的统一版本
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.SR1</spring-cloud.version> <springboot.version>2.0.5.RELEASE</springboot.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${springboot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
开始创建spring cloud的注册中心(eureka)
- 1.创建子项目
项目名字随便取(跳过)。。 - 2.创建好子项目后,配置子项目的pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <!--Eureka服务端的依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies>
- 3.在eureka项目中创建启动类
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class Application_Eureka { public static void main(String[] args){ SpringApplication.run(Application_Eureka.class); } }
- 4.创建配置文件aoolication.yml(名称必须),配置端口和地址
server: port: 7001 eureka: instance: hostname: www.wanglong.fun #本机地址 比如 localhost 都可以 client: fetch-registry: false register-with-eureka: false
- 5.启动main方法,访问 按上面配置 例:www.wanglong.fun:7001
如果配置的是localhost就访问 localhost:7001
如果创建一个服务提供者,
- 1.创建项目方式和eureka一致,在父项目下创建子项目,直接配置pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--Eureka客户端依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies>
- 2.创建启动类,提供服务
- 3.启动类
@SpringBootApplication @EnableEurekaClient public class Application_Provider { public static void main(String[] args){ SpringApplication.run(Application_Provider.class); } }
- 4.暴露服务
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("provider") public class ProviderController { @RequestMapping("get") public String getData(){ return "提供了数据"; } }
- 5…创建配置文件application.yml(名称必须)
server: port: 8001 spring: application: name: Test-provider #服务名称,随意取 eureka: client: service-url: defaultZone: http://www.wanglong.fun:7001/eureka #注册到Eureka的地址
- 6.(测试)启动项目,访问 www.wanglong.fun:8001/provider/get
- 再查看Eureka的页面: www.wanglong.fun:7001
有了服务提供者,就创建一个项目来消费
- 1.创建项目方式和上面一致
- 2.配置pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> </dependencies>
- 3.创建启动类
@SpringBootApplication public class Application_Consumer { public static void main(String[] args){ SpringApplication.run(Application_Consumer.class); } }
- 4.创建消费接口
@RestController @RequestMapping("consumer") public class ConsumerController { //资源路径 private final String url = "http://www.wanglong.fun:8001/provider/get"; @RequestMapping("get") public String get(){ RestTemplate template = new RestTemplate(); String data = template.getForObject(url, String.class); return data; } }
- 5.配置文件application.yml(名称必须),配置端口
server: port: 9001
- 6.启动项目,访问: www.wanglong.fun:9001/consumer/get 成功获取到了数据
创建spring cloud的网关
- 1.创建子项目,方式和上面的一致
- 2.配置pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <!--Eureka的客户端依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!--Zuul网关的依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency> </dependencies>
- 2.创建启动类
@SpringBootApplication @EnableEurekaClient @EnableZuulProxy public class Application_Zuul { public static void main(String[] args){ SpringApplication.run(Application_Zuul.class); } }
- 3.配置文件application.yml(名称必须)
server: port: 9527 spring: application: name: Zuul-Server #Zuul网关在Eureka的服务名称,随便取 eureka: client: service-url: defaultZone: http://www.wanglong.fun:7001/eureka #Eureka的注册地址 zuul: routes: provider.serviceId: Test-provider #没有提示,自己取名称,值为服务的名称
- 4.启动网关,通过网关访问服务提供
规则:www.wanglong.fun:9527/网关服务名称(小写)/服务提供者名称(小写)/服务路径
例:www.wanglong.fun:9527/zuul-server/test-provider/provider/get
- 5.这样的话,路径太长麻烦,不安全,在配置文件中继续配置
server: port: 9527 spring: application: name: Zuul-Server eureka: client: service-url: defaultZone: http://www.wanglong.fun:7001/eureka zuul: routes: provider.serviceId: Test-provider provider.path: /test/** #匹配指定的路径,资源匹配的路径才会拦截,转发
- 6.重新启动项目
原来路径:www.wanglong.fun:9527/zuul-server/test-provider/provider/get
网关访问路径变为: www.wanglong.fun:9527/test/provider/get
!!!但是我们还可以使用原来的网关地址访问资源,需要给屏蔽掉!!! - 7.修改配置文件
server: port: 9527 spring: application: name: Zuul-Server eureka: client: service-url: defaultZone: http://www.wanglong.fun:7001/eureka zuul: routes: provider.serviceId: Test-provider provider.path: /test/** #匹配指定的路径,资源匹配的路径才会拦截,转发ignored-services: "*" #忽略直接使用服务名 *忽略所有的服务 prefix: /server #统一给访问前缀
- 8.访问路径变为: www.wanglong.fun:9527/server/test/provider/get
!!!并且原来的网关地址已经不能访问了!!!
fegin的内部调用
我们要在一个服务提供者中使用另一个服务提供者的服务,需要使用fegin进行内部服务的调用
- 1.创建一个项目,就不多说了,和上面一样
- 2.导入依赖,pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <!--Eureka的客户端的依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!--Feign的依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> </dependencies>
- 3.首先创建启动类,和配置文件application.yml(名称必须)
启动类:
@SpringBootApplication @EnableEurekaClient @EnableFeignClients("com.wlg.feign.client") //feign接口的地址 public class Application_Feign { public static void main(String[] args){ SpringApplication.run(Application_Feign.class); } }
application.yml
server: port: 9002 spring: application: name: feign-consumer eureka: client: service-url: defaultZone: http://www.wanglong.fun:7001/eureka
- 4.创建Client接口,映射和方法名建议复制对应的Controller层
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; @FeignClient(value = "Test-provider") //要调用的服务名称 @RequestMapping("provider") //和调用服务controller的一致 public interface DataClient { //和调用服务controller的一致 @RequestMapping("get") public String getData(); }
- 5.在需要使用的地方注入,就可以调用了
import com.wlg.feign.client.DataClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("consumer") public class DataFeignController { @Autowired private DataClient dataClient; @RequestMapping("feignGet") public String get(){ return dataClient.getData(); } }
- 6.启动项目测试一波
spring cloud的Dome就先搭到这么多,还有很多
比如:配置中心(config),熔断器(hystrix),(负载均衡)ribbon
相关文章推荐
- IDEA基于Spring Cloud Netflix(2.1.0RC3)的Spring Cloud Eureka来实现服务治理的微服务架构搭建以及和SSM框架的整合——实战教程
- maven+springMVC+mybatis+junit详细搭建过程 【转】
- 网关 Spring-Cloud-Gateway 源码解析 —— 调试环境搭建
- Spring Cloud Eureka Server 高可用集群搭建
- Springboot SpringCloud集成OAuth2入门详细教程
- spring cloud+.net core搭建微服务架构:配置中心(四)
- spring cloud+dotnet core搭建微服务架构:配置中心
- spring boot / cloud (十八) 使用docker快速搭建本地环境
- bootStrap table spring mvc 详细运用实例
- spring rabbitmq 环境搭建详细说明
- @4步教你idea搭建SpringCloud工程
- 【Spring Cloud】Eureka服务注册中心搭建
- SSM框架搭建详细过程,springmvc、spring、mybatis整合
- SpringCloud项目搭建(一) — HelloWord
- springcloud项目搭建(六)------整体监控搭建
- SpringCloud之分布式服务跟踪Spring Cloud Sleuth实例
- SSM框架(Spring+SpringMVC+MyBatis)详细搭建过程
- Spring+EhCache缓存实例(详细讲解+源码下载)
- RabbitMQ与java、Spring结合实例详细讲解
- SpringMVC+Spring+Hibernate搭建实例