范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

springboot2。7。6升级springboot3。0。2小结

  项目脚手架
  项目脚手架是基于springBoot2.7.6+jdk17的springCloud分布式微服务架构。主要组件和框架有:nacos,sentinel,springCloudGateway,kafka,elasticsearch,mysql,redis,caffeine,mapstruct,swagger2,skywalking,mybatis-plus。前段时间本来是jdk1.8的,后面升到了jdk17,jdk升级就记得启动脚本里要加:--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED。下面进入正题,升级springboot3.0.2过程。升级难点
  1:版本依赖
  2:springCloudGateway升级异常
  3:KafkaTemplate
  4:swagger改成了springdoc
  5:redis配置文件改动版本依赖
  springboot3升级了大部分的依赖,我拿几个重点的,当然有的可能是没必要升级,我没一个一个试,基本都是找的最新版本。代码里面主要修改就是javax改成了jakarta,这个使用idea或者其他工具全局替换就行。spring-boot-dependencies:3.0.2 spring-cloud-dependencies:2022.0.1 spring-cloud-alibaba-dependencies:2022.0.0.0-RC1 spring-cloud-starter:4.0.1 spring-cloud-starter-gateway:4.0.1 spring-boot-admin-starter-server:3.0.0 jakarta.xml.bind-api:4.0.0 ojdbc8:21.9.0.0 mysql-connector-java:8.0.32 hibernate-validator:8.0.0.Final mybatis-plus-boot-starter:3.5.3.1 mybatis-spring-boot-starter:3.0.1 dynamic-datasource-spring-boot-starter:3.6.1
  有个重要的依赖,swagger2已经不适用springboot3了,我换成了springdoc   com.github.xiaoymin   knife4j-openapi3-jakarta-spring-boot-starter   4.0.0 
  javax改成jakarta,当然不止这一个,其他的就全部替换就OK。
  javaxspringCloudGateway
  网关在升级的时候,我碰到了两个问题,一个是说网关的依赖里面有spring-boot-starter-web的依赖,导致报错,这个我没去找具体哪个依赖了,直接在配置文件里面加了个配置搞定:spring.main.web-application-type=reactive。还有一个是说有两个CacheManager的bean。我只找到一个,直接重写覆盖LocalResponseCacheAutoConfiguration类,在gatewayCacheManager方法上加了一个注解@Primary搞定。@Primary @Bean(         name = {"gatewayCacheManager"} ) public static CacheManager gatewayCacheManager(LocalResponseCacheProperties cacheProperties) {     CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager();     caffeineCacheManager.setCaffeine(caffeine(cacheProperties));     return caffeineCacheManager; }
  还有一个小问题,网关的sentinel报错信息有修改,原先我项目里有个方法handleBlockedRequest,我直接去掉了。现在改成了继承SentinelGatewayBlockExceptionHandler类,重写handle方法直接返回一个json数据。KafkaTemplate
  项目中用的消息中间件是kafka,以前发送消息是:// 发送消息 ListenableFuture> future = kafkaTemplate     .send(TOPIC_TEST, TOPIC_GROUP1, obj2String);  future.thenAccept(new ListenableFutureCallback>() {   @Override   public void onFailure(Throwable throwable) {     //发送失败的处理     log.info(TOPIC_TEST + " - 生产者 发送消息失败:" + throwable.getMessage());   }    @Override   public void onSuccess(SendResult stringObjectSendResult) {     //成功的处理     log.info(TOPIC_TEST + " - 生产者 发送消息成功:" + stringObjectSendResult.toString());   } });
  现在是// 发送消息 CompletableFuture> future = kafkaTemplate.send(TOPIC_TEST, TOPIC_GROUP1, obj2String); // 成功 future.thenAccept(result -> {     log.info(TOPIC_TEST + " - 生产者 发送消息成功:" + result); }); // 失败 future.exceptionally(e -> {     log.info(TOPIC_TEST + " - 生产者 发送消息失败:" + e.getMessage());     return null; });swagger
  swagger改动超级大,只怪当时项目用了swagger2注解,果断改成了springdoc
  依赖换成:knife4j-openapi3-jakarta-spring-boot-starter
  注解改动
  1:controller类注解:io.swagger.annotations.Api改成了io.swagger.v3.oas.annotations.tags.Tag;
  controller类
  2:controller方法注解:io.swagger.annotations.ApiOperation;改成了io.swagger.v3.oas.annotations.Operation;
  controller方法
  3:请求参数注解:io.swagger.annotations.ApiModel和io.swagger.annotations.ApiModelProperty都换成了io.swagger.v3.oas.annotations.media.Schema;
  请求参数
  注意这里以前的@ApiModelProperty 里面有个参数required换成了requiredMode,position参数没了,都要改。
  还有swagger配置也要改,这是我直接从网上抄过来的配置,以前我还能分组的,现在不好使了,只有一个全部接口的分组了,打开贼慢。有时间我再试试。@Configuration public class SwaggerConfig {       @Autowired     private SwaggerModel docketInfos;       /**      * 根据@Tag 上的排序,写入x-order      *      * @return the global open api customizer      */     @Bean     public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() {         return openApi -> {             if (openApi.getTags()!=null){                 openApi.getTags().forEach(tag -> {                     Map map=new HashMap<>();                     map.put("x-order", RandomUtil.randomInt(0,200));                     tag.setExtensions(map);                 });             }             if(openApi.getPaths()!=null){                 openApi.addExtension("x-test123","333");                 openApi.getPaths().addExtension("x-abb",RandomUtil.randomInt(1,200));             }          };     }      @Bean     public GroupedOpenApi userApi(){         String[] paths = { "/**" };         String[] packagedToMatch = { docketInfos.getUrl() };         return GroupedOpenApi.builder().group("全部接口")                 .pathsToMatch(paths)                 .addOperationCustomizer((operation, handlerMethod) -> {                     return operation.addParametersItem(new HeaderParameter().name("type").example("gateway").description("报文头来源").schema(new StringSchema()._default("type").name("gateway").description("报文头来源")));                 })                 .packagesToScan(packagedToMatch).build();     }      @Bean     public OpenAPI customOpenAPI() {         Info info = new Info();         info.setTitle(docketInfos.getTitle());         info.setDescription(docketInfos.getDescription());         info.setTermsOfService("www.baidu.com");         Contact contact = new Contact();         contact.setName("123456");         contact.setUrl("www.baidu.com");         contact.setEmail("123456@163.com");          info.setContact(contact);         info.setVersion(docketInfos.getVersion());         info.setSummary(docketInfos.getDescription());          return new OpenAPI().info(info);     } }redis
  redis主要是配置文件改了,以前是spring.redis....改成了spring.data.redis....
  其他暂时没发现什么改动。总结
  目前我项目中遇到暂时就遇到了这些,还有些组件没去试,像skywalking,es这些,还没试功能,项目能正常启动,交易能发通,就算升级成功了。还有一点,项目中用到了xxl-job,这个没升级成功,升级之后freemarker模板有问题,让人头大,先不管了。

挺进千亿美元俱乐部!湖南外贸上演一部大爽剧开挂爽剧,最是过瘾,许多人都爱看。最近剧荒的小编,今天参加了2022年湖南省外贸进出口情况新闻发布会。一看数据,湖南2022年外贸进出口的走势,可不就是一部大爽剧吗!新闻发布会现场清远周刊撤县设区十年高质量发展潮涌清新热点关注清远以政府有为带动市场有效虎往雄风在,兔来朝气浓。2022年12月29日,清远市举行2022年第四季度重大项目集中开工活动,全市共有40个重大项目开工,总投资约261亿元,(中国经济新亮点)老工业基地吉林把绿色植入产业基因吉林中部,奥迪一汽新能源汽车等项目规划使用绿色电力生产吉林东部,生态屏障长白山野生动植物种群数量稳步增长吉林西部,风光发电设备源源不断产生绿色能源2023年,把绿色植入产业基因,老医疗软件公司涉足光伏麦迪科技拟布局N型电池每经记者范芊芊每经编辑陈俊杰1月13日,麦迪科技(SH603990,股价21。32元,市值50。28亿元)公告,公司第四届董事会第二次会议决议,审议并通过了关于投资高效太阳能电池智月球上垃圾的已超200吨,对太空会有何影响?月球会成垃圾场吗?在阅读此文前,麻烦您点击一下关注,既方便您进行讨论与分享,又给您带来不一样的参与感,感谢您的支持。月球上面有什么?和大家所想的荒芜场景不同,自人类对月探测以来,人类的足迹便充满这片我国2022年捐献造血干细胞1968例新华社北京1月16日电(记者董博婷)中国红十字会第十一届理事会第四次会议16日在京召开。记者从会上获悉,2022年,中国造血干细胞捐献者资料库(中华骨髓库)全年新增入库志愿者资料1农业部再批转基因安全证书隆平高科双管齐下证券时报记者余胜良据农业农村部网站显示,农业农村部13日发布2022年农业转基因生物安全证书(生产应用)批准清单(二),包括邯郸市农业科学院隆平高科等单位申报的38个转基因项目获批不明原因发育迟缓精神发育迟缓儿童基因检测结果研究发育迟缓(developmentdelay,DD)精神发育迟缓(mentalretardation,MR)是儿童康复领域常见疾病。DD是指患儿存在明显的社会交往运动认知语言等方面适潮出新高度中能链x王者人生加油站上演皮肤争夺赛随着汽车缓缓驶入北京能链大柳树加油站,现场抽奖活动正如火如荼开展不仅有花样叠出的抽奖和礼品,更有新潮的美陈展示,吸引车主驻足打卡。大家感叹原来油站活动也可以这样时尚年轻化!2022阳康后,风寒咳风热咳都可用的止咳散止咳散文敏敏现在有很多人在阳转阴之后,还总是感觉喉咙发痒,止不住地咳嗽。在众多止咳的方药中,有一个方子,出自清代名医程钟龄的医学心悟中止咳散。这个药方相对温润和平,不热也不寒。原方二波感染来袭,提醒中老年不管有钱没钱,多吃这5样,润肺去燥随着疫情全面放开,第一波疫情感染已经结束,让我们进入了后疫情的时代,专家表示今年的春节是一道坎,人员的大量流动,会叠加呼吸道感染,春节前后将迎来第一波感染高峰期,因此,我们要保护好
1958年,军区首长视察辽宁,发现粮仓警卫竟是自己牺牲5年的战友1958年,辽宁省东沟县的一个粮仓来了一群特殊的客人,原来是抗美援朝的志愿军老首长路过这里,听说这里也有一位以前部队退下来的老兵,就想来拜访一下。一群人缓缓踱步到守卫室的门口,只看俄媒俄军大规模打击严重破坏乌军部队指挥系统俄媒俄国防部称俄军大规模打击严重破坏乌军部队指挥系统环球网报道综合俄新社塔斯社等多家俄媒报道,俄国防部发言人科纳申科夫11月1日通报称,俄军10月31日对乌克兰进行大规模打击,严重以戴绿帽为荣,这个国家太奇葩了,当地女人身材令人大饱眼福每个国家其实都有专属于自己的一些独特的文化和习俗,对于外国人来说,有些时候是不太能够理解这些文化与习俗的。毕竟每个国家的历史和发展情况都是有着比较大的差别的,而这些习俗和文化必然也广西恩城国家级自然保护区第一届自然观察节举行10月29日30日,广西恩城国家级自然保护区(后简称恩城保护区)在广西崇左市大新县榄圩乡正隆村驮押屯举办了神奇自然在身边第一届自然观察节。活动吸引了不少来自大新崇左南宁等地的亲子家中国更像一个文明国家古代并没有民族这个词汇,它起源于西方的威斯特伐里亚体系,并且在19世纪逐渐流行于世界,被人们所接受,但做为一个外来的现代概念它完全无法应用于古代,更不适用于中国。因为东亚是一个孤立中国科技企业正在加快布局大语言模型技术今年4月,谷歌公司的LaMDA人工智能系统着实火了一把,它基于大语言模型(LLM)对话学习后,可以学会谈论几乎任何事情,同时进行语言的微调,以显着提高其响应的敏感性和特异性。谷歌还阿里云亮相中国互联网基础资源大会飞天企业版推助IPv6创新实践北京,2022年11月2日近日,阿里云亮相由工业和信息化部主办的第三届中国互联网基础资源大会,阿里云资深技术专家专有云网络首席架构师张然(花名然犀)于IPv6发展创新论坛发表了题为日媒美国总统拜登开始对中国实施芯片战争,中国何去何从?拜登的宣战公告2022年10月7日,美国总统拜登以商务部命令的形式,向中国宣布了事实上的芯片战争。今后包括芯片及制造设备,如果没有美国商务部的许可,不能出口到中国。使用美国技术的外中国股市重回视野的供销社,这究竟是意味着什么?发展前景供销社,全称供销合作社,是集体经济。并且供销社是集体所有制,成员是没有编制的,并且并不是所有人都可以加入供销社的,供销社的主要成员是农民社员。众所周知,供销合作社的老本行是外网评论中国电动汽车的地位对美国汽车产业意味着什么?2021年,中国电动车出口达到58。8万辆,同比增长高达163,2022年一季度突破20万辆,势头强劲。以下为国外网网友对中国新能源汽车行业的评论PeterMakin推动中国电动汽麦当劳中国携手乒乓球世界冠军马龙,推出新升级巨无霸11月2日,麦当劳中国正式推出新升级巨无霸,对巨无霸的烹饪工艺和产品口感进行了优化,并延续了巨无霸的高品质食材经典搭配和专属巨无霸酱。即日起,顾客可在中国内地近5000家麦当劳餐厅