若依微服务框架3.6.4改造记录(未完待续)

若依微服务版本:3.6.4
在这里插入图片描述

1、登录页面图片码证码出不来,提示跨域

解决方案:在gateway中增加跨域代码设置

package com.****.gateway.config;

import org.springframework.http.HttpHeaders;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.cors.reactive.CorsUtils;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain;
import reactor.core.publisher.Mono;

@Component
public class CorsFilter implements WebFilter {
   
    private static final String MAX_AGE = "3600L";

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
   
        ServerHttpRequest request = exchange.getRequest();
        if (!CorsUtils.isCorsRequest(request)){
   
            return  chain.filter(exchange);
        }

        ServerHttpResponse response = exchange.getResponse();
        HttpHeaders headers = response.getHeaders();
        headers.add("Access-Control-Allow-Origin","*");
        headers.add("Access-Control-Allow-Methods", "*");
        headers.add("Access-Control-Allow-Headers", "*");
        headers.add("Access-Control-Max-Age", MAX_AGE);
        if (request.getMethod() == org.springframework.http.HttpMethod.OPTIONS) {
   
            response.setStatusCode(org.springframework.http.HttpStatus.OK);
            return Mono.empty();
        }
        return chain.filter(exchange);
    }
}

2、多套开发环境、测试环境都使用同一个nacos和redis,会出现调用服务失败、被踢出等问题

问题原因:各自环境对redis相互覆盖造成的
解决方案:项目中增加不同环境的profile文件,在nacos中配置dev\test\prod不同命名空间的,redis配置中指定不同的database参数;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在idea中或在linux中java -jar启动时要带参数进行:–spring.profiles.active=dev/test/prod

3、将框架中的swagger改为knife4j

最新版将swagger改成了Springdoc,需要进行下面改造;
3.1、在ruoyi-common-swagger加入knife4j的ui依赖

<!--引入Knife4j的ui包-->
<dependency>
	<groupId>io.springboot</groupId>
	<artifactId>knife4j-openapi3-ui</artifactId>
	<version>4.5.0</version>
</dependency>

3.2、在ruoyi-gateway加入webflux-core和knife4j-gateway依赖,删除原有的springdoc-openapi-webflux-ui避免冲突

<!-- Springdoc -->
<dependency>
	<groupId>org.springdoc</groupId>
	<artifactId>springdoc-openapi-webflux-core</artifactId>
	<version>${springdoc.version}</version>
</dependency>

<!--引入Knife4j的gateway包-->
<dependency>
	<groupId>com.github.xiaoymin</groupId>
	<artifactId>knife4j-gateway-spring-boot-starter</artifactId>
	<version>4.5.0</version>
</dependency>

3.3、在nacos中的ruoyi-gateway-dev.yml中加入配置,以便网关聚合访问文档。

knife4j:
  gateway:
    enabled: true
    tags-sorter: order
    operations-sorter: order
    strategy: manual
    routes:
      - name: 系统模块
        url: /ruoyi-system/v3/api-docs?group=default
        service-name: ruoyi-system
        context-path: /ruoyi-system
        order: 1
      - name: 代码生成
        url: /ruoyi-gen/v3/api-docs?group=default
        service-name: ruoyi-gen
        context-path: /ruoyi-gen
        order: 2
      - name: 定时任务
        url: /ruoyi-job/v3/api-docs?group=default
        service-name: ruoyi-job
        context-path: /ruoyi-job
        order: 3

3.4 原有的SpringDocConfig.java可以删除
3.5 最后应用网关的访问地址为http://{ip}:{port}/doc.html
3.6 原ruoyi-common-core中的BaseEntity也想增加@Schema注解,需要引入以下依赖,直接引入
knife4j-springdoc-ui或springfox-boot-starter 都会依赖冲突,导致gateway或auth启不启来。

        <dependency>
            <groupId>io.swagger.core.v3</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>2.2.0</version>
            <scope>compile</scope>
        </dependency>

4、将mybatis改成mybatis-plus

  1. 根pom.xml增加包引用
<mybatis-plus.version>3.5.4</mybatis-plus.version>

<!-- mybatis-plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>${mybatis-plus.version}</version>
</dependency>
  1. 在ruoyi-common-core中增加
    2.1pom.xml
        <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomido
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值