首页 » 网站建设 » 5942phpcn技巧_Spring Cloud 进级FinchleySR2稳定版本具体攻略双12福利

5942phpcn技巧_Spring Cloud 进级FinchleySR2稳定版本具体攻略双12福利

访客 2024-11-11 0

扫一扫用手机浏览

文章目录 [+]

自然不用说,那肯定是SpringCloud的主版本的问题,是要升级到什么版本,是F版还是G版本。

这里给几点建议(亲采坑履历)

5942phpcn技巧_Spring Cloud 进级FinchleySR2稳定版本具体攻略双12福利

企业开拓用Finchley.SR2(稳定版本),个人开拓随意。

5942phpcn技巧_Spring Cloud 进级FinchleySR2稳定版本具体攻略双12福利
(图片来自网络侵删)

升级的时候用的是Greenwish M3 pre最新版本(须要配置maven地址配成Spring供应的仓库地址,暂时没有提交到其他仓库)可是碰着了很多问题,最要命的是bug不好找办理方案。
不到半天的韶光就降为了F稳定版本。

SpringCloud 版本解释

下图是在官网一个关于SpringCloud版本的解释(截至2018年12月 12日)希望能帮助您

版本列表

cloud版本 SNAPSHOT: 快照版本,随时可能修正 ;

M: MileStone;M1表示第1个里程碑版本,一样平常同时标注PRE,表示预览版版;

SR: Service Release,SR1表示第1个正式版本,一样平常同时标注

GA:(GenerallyAvailable),表示稳定版本

以是企业开拓选择稳定版本吧即可,无需犹豫(分外情形除外) 。

更多信息关注@架构师速成记

2 详细步骤

2.1合并svn版本,做好备份事情

提交个人代码,合并到svn主版本上,做好备份事情后在进行升级(升级肯定有坑点,以是备份是必须的)

svn

2.2 pom文件升级

之前版本

启动之前版本&&升级前 pom文件

pom文件

开始升级 父pom文件升级

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR2</version> <type>pom</type> <scope>import</scope> </dependency>

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent>

做完两个引入就升级完了?NO,由于F版本和之前的D版本差异还是很大的,以是尼懂得,连续下一步。

子模块各个pom须要升级的引入jar(版本变动,引入也变革很大,如eureka、feign等)

eureka

<!--eureka-server做事端引入 --><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId></dependency>

feign

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

zuul

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency>

....其它的组件根据用户引入做成相应变动,不再一 一列出。

以上几个组件都发生了变革,以是进行更正为对应版本的引入即可

更多信息关注@架构师速成记

2.3 Java类排查导包问题

jar版本发生了变革,自然下一便是变动java类导入的包路径,要不然一起标红

如feign的 引入

报错

去除缺点的引入后重新引入 :import org.springframework.cloud.netflix.feign.FeignClient;

java的问题还是挺多的,根据报错地方进行排查即可,这些都是比较明显的问题,比较随意马虎排查,下面列一下比较隐晦的bug。
如下所示。
如果对您的项目有帮助欢迎关注 @架构师速成记

3.常见 问题汇总

3.1、Eureka 注册中央显示做事的ip地址不显示

问题描述: 如下图所示注册 中央不显示做事的ip地址了,尴尬了

UP (1) - ${spring.cloud.client.ipAddress}:7006

办理方案:

eureka: client: #客户端注册进eureka做事列表内 service-url: defaultZone: http://localhost:7001/eureka/ instance: instance-id: ${spring.cloud.client.ipAddress}:${server.port} prefer-ip-address: true

将${spring.cloud.client.ipAddress}改成${spring.cloud.client.ip-address}

eureka: client: #客户端注册进eureka做事列表内 service-url: defaultZone: http://localhost:7001/eureka/ instance: instance-id: ${spring.cloud.client.ip-address}:${server.port} prefer-ip-address: true

3.2、zuul网关凑集springsecurity_JWT 颁发token_但是Authorization无法通报到response的header中

1.默认情形下,zuul不会将敏感的http首部,如(Cookie,Set-Cookie)和Authorization转发到下贱做事,要让Zuul传播HTTP首部Authorization,须要在zuul做事网关的application.yml或者application.properties中,设置以下配置:

这样设置:

E:\IdeaWkSpace\SmartCommunity\sc-gateway\src\main\resources\application.properties

spring.application.name=sc-gateway

server.port=8040

zuul.host.socket-timeout-millis=60000

zuul.host.connect-timeout-millis=10000

#zuul.routes.api-a.path=/producer/

#zuul.routes.api-a.url=spring-cloud-producer

#zuul.sensitive-headers=\公众Cookie\"大众, \"大众Set-Cookie\"大众, \"大众Authorization\"大众)

zuul.sensitive-headers=\"大众Cookie\"大众,\公众Set-Cookie\"大众 //把稳这里便是这样设置的

上面是提出的一种办理方案,暂时没有那样设置,我们采取下面的这种做法

核心思路便是Authorization这种敏感关键字用其他如x-user-token代替

//通报token的备用字段public static final String HEADER_X_USER_TOKEN = \"大众x-user-token\"大众;

办理方案:

String token= request.getHeader(JwtUtil.HEADER_AUTH); log.info(\公众访问token{}\"大众,token); //是否开启 token认证,获取上岸用户 if(!StrUtils.isBlank(token)){ try { UserInfo userInfo=JwtUtil.getInstance().validateToken(token); if(!StrUtils.isBlank(userInfo)) { ctx.addZuulRequestHeader(JwtUtil.HEADER_AUTH,token); ctx.addZuulRequestHeader(\公众x-user-id\"大众, userInfo.getId()); ctx.addZuulRequestHeader(JwtUtil.HEADER_X_USER_TOKEN,token);// ctx.addZuulRequestHeader(\公众x-role-code\"大众, request.getRequestURL().toString()); } }catch (Exception ex){

public class UserTokenIntercepter extends HandlerInterceptorAdapter { private static final Logger log = LoggerFactory.getLogger(UserTokenIntercepter.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse respone, Object arg2) throws Exception { String token= request.getHeader(JwtUtil.HEADER_AUTH); //默认情形下,zuul不会将敏感的http首部,如(Cookie,Set-Cookie)和Authorization转发到下贱做事,要让Zuul传播HTTP首部Authorization,须要在zuul做事网关的application.yml或者application.properties中,设置以下配置:zuul.sensitive-headers=\"大众Cookie\"大众,\公众Set-Cookie\公众 //如果无法通报换成其他的字段通报token if(StrUtils.isBlank(token)){ token= request.getHeader(JwtUtil.HEADER_X_USER_TOKEN); } //respone.setCharacterEncoding(Constant.CONTENT_TYPE); if (!StrUtils.isBlank(token)){ ApplicationContextHolder.setToken(token); } return true; }

3.3、跨域问题

问题描述

前端 vue 框架,后台 php,百度跨域问题后台加这段代码

header(\公众Access-Control-Allow-Origin: \"大众);

加了之后报这个错:

The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '' when the request's credentials mode is 'include'.

引用网上比较常见的谈论,截图如下

在升级之前由于须要验证码 保持session同等性,以是配置withCredentials是true的,但是升级之后,问题就涌现来了,后来用下面的这段配置办理 了升级的问题,代码如下。
如果对你的项目有帮助欢迎关注今日头条 @架构师速成记

@Configurationpublic class WebMvcFilterConfigurerAdapter implements WebMvcConfigurer { / 办理跨域的问题 @return / @Bean public CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); // 许可cookies跨域 config.addAllowedOrigin(\公众\"大众);// #许可向该做事器提交要求的URI,表示全部许可,在SpringMVC中,如果设成,会自动转成当前要求头中的Origin config.addAllowedHeader(\"大众\"大众);// #许可访问的头信息,表示全部 config.setMaxAge(18000L);// 预检要求的缓存韶光(秒),即在这个韶光段里,对付相同的跨域要求不会再预检了 config.addAllowedMethod(\"大众\公众);// 许可提交要求的方法,表示全部许可 source.registerCorsConfiguration(\"大众/\"大众, config); return new CorsFilter(source); }...}

3.4 WebMvcConfigurerAdapter过期问题

办理思路:用WebMvcConfigurer替代

@Configurationpublic class WebMvcFilterConfigurerAdapter implements WebMvcConfigurer { @Bean public HandlerInterceptor getSecurityInterceptor(){ return new SecurityInterceptor(); } / 配置静态资源 / public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(\公众/static/\"大众).addResourceLocations(\"大众classpath:/static/\"大众); registry.addResourceHandler(\"大众/templates/\"大众).addResourceLocations(\"大众classpath:/templates/\公众);// super.addResourceHandlers(registry); }.....}

3.5 Feign报错'xx.FeignClientSpecification', defined in null, could not be registered.

缺点描述:

版本利用的是SpringBoot: 2.0.6.RELEASE,SpringCloud: F稳定版

报错:

The bean 'xxxx.FeignClientSpecification', defined in null, could not be registered. A bean with that name has already been defined in null and overriding is disabled.Caused by: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name xxxx.FeignClientSpecification' defined in null: Cannot register bean definition [Generic bean: class [org.springframework.cloud.openfeign.FeignClientSpecification]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] for bean 'xxxx.FeignClientSpecification': There is already [Generic bean: class [org.springframework.cloud.openfeign.FeignClientSpecification]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] bound.

办理:多个接口上的@FeignClient(“相同做事名”)会报错,overriding is disabled。

在application.yml中配置:

spring: main: allow-bean-definition-overriding: true

暂时 这么办理,不知有没有“后患”,欢迎其他人留言,共同谈论,感激。

更多信息关注@架构师速成记

3.6 .Error:(4, 40) java: 程序包com.fasterxml.jackson.annotation不存在

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

</dependency>

3.7 .Caused by: java.lang.IllegalStateException: Failed to introspect Class [com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure] from ClassLoader [sun.misc.Launcher$AppClassLoader@18

将druid升级到1.1.10

3.8 Servlet-specific server properties

A number of server. properties that are Servlet-specific have moved to server.servlet:

Old propertyNew propertyserver.context-parameters.

server.servlet.context-parameters.

server.context-path

server.servlet.context-path

server.jsp.class-name

server.servlet.jsp.class-name

server.jsp.init-parameters.

server.servlet.jsp.init-parameters.

server.jsp.registered

server.servlet.jsp.registered

server.servlet-path

server.servlet.path

3.9 Endpoints infrastructure key have been harmonized:

Old propertyNew propertyendpoints.<id>.

management.endpoint.<id>.

endpoints.cors.

management.endpoints.web.cors.

endpoints.jmx.

management.endpoints.jmx.

management.address

management.server.address

management.context-path

management.server.servlet.context-path

management.ssl.

management.server.ssl.

management.port

management.server.port

3.10 Developer Tools

Hot swapping

As the Spring Loaded project has been moved to the attic, its support in Spring Boot has been removed. We advise to use Devtools instead.

Devtools Remote Debug Tunnel

The support for tunnelling remote debugging over HTTP has been removed from Devtools.

总的来说热支配插件把稳下 就ok

3.11 Dependency Versions(版本依赖)

The minimum supported version of the following libraries has changed:

Elasticsearch 5.6Gradle 4Hibernate 5.2Jetty 9.4Spring Framework 5Spring Security 5Spring Integration 5 (see also their migration guide)Tomcat 8.5

Spring Boot 2.x 新特性总结及迁移指南(转)

https://blog.csdn.net/zzhuan_1/article/details/84975942

3.12 springboot2.x 的 RedisCacheManager变革

RedisCacheManager已经没有了单参数的布局方法

....

END

还有 其他问题暂时没有 汇总完,下一章节进行汇总,如果对您的项目有帮助欢迎关注

更多信息关注@架构师速成记

标签:

相关文章

PHP实现文字转图片的代码与应用

图片处理技术在各个领域得到了广泛应用。在PHP编程中,文字转图片功能同样具有很高的实用价值。本文将针对PHP实现文字转图片的代码进...

网站建设 2025-03-02 阅读1 评论0

NAN0017探索新型纳米材料的奥秘与应用

纳米技术作为一门新兴的交叉学科,近年来在材料科学、生物医学、电子工程等领域取得了举世瞩目的成果。其中,NAN0017作为一种新型纳...

网站建设 2025-03-02 阅读1 评论0

L26368XO代码其背后的创新与突破

编程语言在各个领域发挥着越来越重要的作用。在众多编程语言中,L26368XO代码以其独特的优势,成为了业界关注的焦点。本文将深入剖...

网站建设 2025-03-02 阅读1 评论0

HTML字体背景打造个化网页设计的关键元素

网页设计已经成为现代网络传播的重要手段。在众多网页设计元素中,字体和背景的搭配尤为关键。本文将从HTML字体背景设置的角度,探讨其...

网站建设 2025-03-02 阅读1 评论0