spring-cloud.version(springcloudversion标签)
本篇文章给大家谈谈spring-cloud.version,以及springcloudversion标签对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何选择Spring Boot最稳定的版本,以及相应的Spring Cloud版本
- 2、2019-10-31 spring Cloud 无法注册到nacos问题
- 3、错误org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose
- 4、SpringCloud简单案例
如何选择Spring Boot最稳定的版本,以及相应的Spring Cloud版本
1、登录 Spring的官网 ,查看当前最稳定的版本。
当然了歼察察,想使用Spring Cloud,还需要许多的jar包,如何选择兼容没脊的jar包呢?在这里,我们可以考虑使maven的 dependencyManagement 功能。
dependencyManagement 其实就相当于一个对jar版本进行管理的依赖管理器,如果在 dependencies 的 dependency 里没有找到 version 属性,Maven就会去 dependencyManagement 里寻找相应的版本信息。
如果既使用了 dependencyManagement 功能,又在 dependencies 的 dependency 里指定了 version 属性, dependency 是以 version 属性为准的,所以,不用担心使用 dependencyManagement 功能之后无法自行指定jar包的版本信息。
在这里,我们选择的是alibaba的版本管理配置。
首先,进入 阿里巴巴的GitHub地址 ,进入WiKi页面,点击版本说明。
或者直接点击 版本说明
我们可以看到,2.4.2版本的Spring Boot,对应的alibaba 版本是2020.0.RC1,对应的Spring Cloud版本是2020.0,我们选择2020.0.2,最终配置如下。
我这里是为了学习,所以选择的都是最新版本氏茄,在生产环境,还是要根据实际情况来详细评估选择哪些版本,以免给自己挖坑。
[img]2019-10-31 spring Cloud 无法注册到nacos问题
最近在学习nacos的使用,按照官方文档写了一个SpringCloud+nacos的小demo,却发现注册进nacos注册中心,日志是这样的:
后来发现我springboot的世哪带版本是2.2.0.RELEASE
降低到 2.0.8.RELEASE后就能注册了,和nacos的官网说明:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本有些偏差。
此处:nacos 1.1.4 、
pom.xml如下
?xml version="1.0" encoding="UTF-8"?
project xmlns="" xmlns:xsi=""
xsi:schemaLocation=" "
modelVersion4.0.0/modelVersion
parent
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-parent/artifactId
version2.0.8.RELEASE/version
relativePath/
/parent
groupIdcom.candy/groupId
artifactIdnacos-remotecall/artifactId
version0.0.1-SNAPSHOT/version
namenacos-remotecall/name
descriptionDemo project for Spring Boot/description
properties
java.version1.8搜芦/java.version
junit.version4.10/junit.version
spring-cloud.versionFinchley.SR2/spring-cloud.version
/properties
dependencies
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-web/artifactId
/dependency
dependency
groupIdorg.springframework.cloud/groupId
缓猜artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
version0.9.0.RELEASE/version
/dependency
dependency
groupIdorg.springframework.cloud/groupId
artifactIdspring-cloud-starter-openfeign/artifactId
version2.0.0.RELEASE/version
/dependency
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-test/artifactId
scopetest/scope
exclusions
exclusion
groupIdorg.junit.vintage/groupId
artifactIdjunit-vintage-engine/artifactId
/exclusion
/exclusions
/dependency
dependency
groupIdjunit/groupId
artifactIdjunit/artifactId
version${junit.version}/version
scopetest/scope
/dependency
/dependencies
dependencyManagement
dependencies
dependency
groupIdorg.springframework.cloud/groupId
artifactIdspring-cloud-dependencies/artifactId
version${spring-cloud.version}/version
typepom/type
scopeimport/scope
/dependency
/dependencies
/dependencyManagement
build
plugins
plugin
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-maven-plugin/artifactId
/plugin
/plugins
/build
/project
错误org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose
1 当我们使用openfeign进行微服务之间的相互调用时,会出现如上的错误
sprinboot的版本为:
parent
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-parent/artifactId
version2.4.4/version
relativePath/ !-- lookup parent from repository --
/parent
springcloud的版本为:
properties
java.version1.8/java.version
spring-cloud.version2020.0.2/spring-cloud.version
/properties
这是因为版本太高导致的除了降低版本解决,兄启也可以通过排除使用ribbon依赖并且使用loadbanlencer来解决:
dependency
羡燃如 groupIdcom.alibaba.cloud/groupId
artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
!-- 不使用ribbon进行负载均衡--
exclusions
exclusion
groupIdorg.springframework.cloud/groupId
artifactIdspring-cloud-starter-netflix-ribbon/artifactId
/exclusion
/exclusions
/dependency
dependency
groupIdorg.springframework.cloud/groupId
段伍 artifactIdspring-cloud-loadbalancer/artifactId
version3.0.2/version
/dependency
SpringCloud简单案例
一、服务注册与发现
这里会用到Spring Cloud Netflix,该项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置丛嫌袭一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul)渗兄,客户端负载均衡(Ribbon)等。
这里的核心内容是服务发现模块:Eureka
创建“服务注册中心”
1.创建基于web的Maven项目(springcloud)
2.创建服务注册中心。在springcloud项目中创建SpringBoot项目(springboot):
勾选Cloud Discovery–Eureka server。以方便导包
3编写springboot项目
3.1查看pom.xml文件
4在启动类上加上注解 如下
通过@EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话。这一步非常的简单,只需要在一个普通的Spring Boot应用中添加这个注解就能开启此功能,比如下面的例子:
5 修改application.yml文件
yml文件的好处,天然的树状结构,一目了然
---#端口号server: port: 8760eureka: instance: hostname: localhost client:# eureka.client.registerWithEureka :表示是否将自己注册到Eureka Server,默者罩认为true。# 由于当前这个应用就是Eureka Server,故而设为falseregister-with-eureka:false# eureka.client.fetchRegistry :表示是否从Eureka Server获取注册信息,默认为true。因为这是一个单点的Eureka Server,# 不需要同步其他的Eureka Server节点的数据,故而设为false。fetch-registry:falseservice-url:# eureka.client.serviceUrl.defaultZone :设置与Eureka Server交互的地址,#查询服务和注册服务都需要依赖这个地址。默认是defaultZone: http:// {server.port}/eureka/
6 启动项目后访问
可以看到下面的页面,其中还没有发现任何服务:
7.搭建服务端(生产者)
创建springBoot项目同上
查看pom.xml文件
?xml version="1.0"encoding="UTF-8"?4.0.0org.springframework.bootspring-boot-starter-parent2.1.3.RELEASEcom.handproducer0.0.1-SNAPSHOTproducerDemo project for Spring Boot1.8Greenwich.RELEASEorg.springframework.cloudspring-cloud-starter-netflix-eureka-serverorg.springframework.bootspring-boot-starter-testtestorg.springframework.cloudspring-cloud-dependencies${spring-cloud.version}pomimportorg.springframework.bootspring-boot-maven-pluginspring-milestonesSpring Milestones
8修改application.yml文件
注:端口不能与上面的相同。这里的服务name:service-hi 可以根据自己情况定义。
---server: port:8762eureka: client: service-url: defaultZone: : application: name: service-producer
9 编写启动类
packagecom.hand.producer;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.cloud.netflix.eureka.EnableEurekaClient;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;@SpringBootApplication@EnableEurekaClient@RestControllerpublicclassProducerApplication{publicstaticvoidmain(String[] args){ SpringApplication.run(ProducerApplication.class, args); }@Value("${server.port}") String port;@RequestMapping("/hi")publicStringhome(@RequestParam String name){return"hi "+ name +",i am from port:"+ port; }}
运行服务
然后查看
可以看到,我们定义的服务被注册了。如下图所示:
9.创建消费者
9.1 创建消费者modul,流程如上述工程创建流程。
9.2查看pom.xml文件
?xml version="1.0"encoding="UTF-8"?4.0.0org.springframework.bootspring-boot-starter-parent2.1.3.RELEASEcom.handcustomer0.0.1-SNAPSHOTcustomerDemo project for Spring Boot1.8Greenwich.RELEASEorg.springframework.cloudspring-cloud-starter-netflix-eureka-serverorg.springframework.bootspring-boot-starter-testtestorg.springframework.cloudspring-cloud-dependencies${spring-cloud.version}pomimportorg.springframework.bootspring-boot-maven-pluginspring-milestonesSpring Milestones
10 yml配置
---server: port:8763eureka: client: service-url: defaultZone: : application: name: service-customerfeign: hystrix: enabled :true
11 编写启动类
@EnableDiscoveryClient表明标注类是消费者,加入restTemplate以消费相关的服务
packagecom.hand.customer;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.cloud.client.discovery.EnableDiscoveryClient;importorg.springframework.cloud.client.loadbalancer.LoadBalanced;importorg.springframework.context.annotation.Bean;importorg.springframework.web.client.RestTemplate;@SpringBootApplication@EnableDiscoveryClientpublicclassCustomerApplication{publicstaticvoidmain(String[] args){ SpringApplication.run(CustomerApplication.class, args); }@Bean@LoadBalancedRestTemplaterestTemplate(){returnnewRestTemplate(); }}
12 .创建service和controller
12.1 service层
packagecom.hand.customer.controller;importcom.hand.customer.service.HelloService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;packagecom.hand.customer.service;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importorg.springframework.web.client.RestTemplate;/**
*/@ServicepublicclassHelloService{@AutowiredRestTemplate restTemplate;publicStringhiService(String name){returnrestTemplate.getForObject(" "+ name, String.class); }}
12.2 controller层
packagecom.hand.customer.controller;importcom.hand.customer.service.HelloService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;/**
*/@RestControllerpublic class HelloControler { @AutowiredHelloService helloService; @RequestMapping(value="/hi") public String hi(@RequestParam String name) {returnhelloService.hiService(name); }}
再次查看服务
在浏览器中输入
链接:
关于spring-cloud.version和springcloudversion标签的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。