工作小问题记录 - 持续更新

  • 2024年6月17日10:14:22
    用vware安装centos7,启动后查看端口, netstat-tlnp 报错netstat指令不存在,用 yum install net-tools 报错 "Could not resolve host: mirrorlist.centos.org"
    解决方法:编辑 /etc/sysconfig/network-scripts/ifcfg-ens33 将 ONBOOT设置成 yes, 即 ONBOOT=yes 重启网络服务 systemctl restart network

  • 2024年9月2日17:00:17
    有个若依的单机项目A(3.8.7 - 前后端分离版本),需要内部调用一个公共服务B,接入的过程中出现了一些问题,记录下,系统的版本信息如下:

系统 SpringBoot SpringCloud
A 2.5.15 -
B 2.7.13 spring-cloud-starter-alibaba-nacos-discovery : 2021.0.5.0
spring-cloud-starter-openfeign : 3.1.8
spring-cloud-starter-loadbalancer : 3.1.7
  1. A系统中直接引入当前版本的nacos、openfeign ,报错:


    image.png

SpringBoot 2.5.15 不能适配当前版本的Spring Cloud,它能适配哪些版本,有知道的朋友可以告知下。

1.1 将SpringBoot 从 2.5.15 升级到与 B相同版本,升级之后,若依项目启动会报错,报错信息包括

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182)
    at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54)
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:357)
    at java.lang.Iterable.forEach(Iterable.java:75)

解决方法,在A项目中增加一个configurate类,增加以下代码

@Configuration
public class Swagger3SpringFoxConfig {
    @Bean
    public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
        return new BeanPostProcessor() {

            @Override
            public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
                if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
                    customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
                }
                return bean;
            }

            private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) {
                List<T> copy = mappings.stream()
                        .filter(mapping -> mapping.getPatternParser() == null)
                        .collect(Collectors.toList());
                mappings.clear();
                mappings.addAll(copy);
            }

            @SuppressWarnings("unchecked")
            private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
                try {
                    Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
                    field.setAccessible(true);
                    return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
                } catch (IllegalArgumentException | IllegalAccessException e) {
                    throw new IllegalStateException(e);
                }
            }
        };
    }
}

1.2 还会报bean冲突的异常

Method springSecurityFilterChain in org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration required a single bean, but 2 were found:
    - requestMappingHandlerMapping: defined by method 'requestMappingHandlerMapping' in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class]
    - controllerEndpointHandlerMapping: defined by method 'controllerEndpointHandlerMapping' in class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/servlet/WebMvcEndpointManagementContextConfiguration.class]

解决方法,找到问题类 com.ruoyi.framework.config.properties.PermitAllUrlProperties ,其中有段代码 RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class); 指定需要获取的bean名称即可

 RequestMappingHandlerMapping mapping = applicationContext.getBean("requestMappingHandlerMapping", RequestMappingHandlerMapping.class);
  1. 之前A中的 spring-cloud-starter-openfeign 与 spring-cloud-starter-loadbalancer 未与B保持一致,用了2.2.5.RELEASE ,用这个版本,启动没有问题,A调用B的method时,报错
No instances available for nacos-provider

版本保持一致就ok了

  • 2024-9-6 15:33:26
    npm install 报错 request to https://registry.npmjs.org/xxx failed, reason: connect ETIMEDOUT 104.16.25.34:443
    npm仓库问题,配置淘宝镜像
#设置镜像仓库  
npm config set registry http://registry.npmmirror.com
#查看镜像仓库
npm config get registry
#重新npm install
npm install

解决方法:需要在对应的前端页面,增加一行代码

# 在html的请求头标签中加上
<meta name=”referrer” content=”no-referrer”>
  • 2025-6-4 18:23:15
    应用程序,docker部署之后,正常启动,本地可以访问,远程无法访问
    排查步骤
1. 本地访问 curl http://127.0.0.1:8080/xxx  返回结果符合预期
2. 远程是否可以访问非docker的端口,比如 telnet 127.0.0.1 22  能通符合预期
3. 查看防火墙端口是否开放:sudo firewall-cmd --list-ports  
4. 查看docker的网络情况   docker network ls / docker inspect xdso-nacos | grep NetworkMode  检查网络模式是不是与创建的一致,创建网络示例: create --driver=bridge --attachable --subnet=172.20.0.0/24 --gateway=172.20.0.1  len-test
5. 检查iptables转发是否开启: sysctl net.ipv4.ip_forward 返回值为 net.ipv4.ip_forward = 0 , 说明转发未开启,需要设置为 1,设置命令  
  echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
  sudo sysctl -p
  • 2025-6-25 13:58:22
    通过http发送第三方请求,需要上传文件,当文件大小过大时,通过http请求时报错


    image.png

    通过以下方法可以解决


    image.png

    改成如下方法即可
    image.png

具体原因留个TODO,先做记录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容