SpringBoot项目配置文件不生效问题解决

目录

一、问题描述

二、问题解决过程

三、总结

四、拓展


一、问题描述

近期在写一个RabbitMQ基于springboot的使用damon的时候,在启动消费者服务的时候一直发现连接不上RabbitMQ,很是纳闷,配置文件大概如下:

复制代码
server:
  port: 8182
  servlet:
    context-path: /

spring:
  application:
    name: consumer-service
  main:
    allow-bean-definition-overriding: true

  #配置rabbitmq
  rabbitmq:
    host: 110.40.209.16
    port: 5672
    virtual-host: /
    username: zhuoye
    password: zhuoye5211314
    listener:
      simple:
        prefetch: 1 #每次只能处理一个,处理完成才能获取下一个消息
        acknowledge-mode: auto #自动进行消费者确认
        retry:
          enabled: true # 开启重试机制,本地重试
          initial-interval: 1000ms  #设置失败等待时长为1秒
          multiplier: 1.2   #下次失败的等待时长倍数
          max-attempts: 3  #最大重试次数3次
          stateless: true

启动的时候 报错如下:

二、问题解决过程

第一反应就是检查配置文件,是不是配置文件哪里写的不对。首先就是检查ip地址、端口、账号、密码信息。然而,发现并没有问题。是不是近视了,在看一遍?还是没发现问题。而且生产者服务配置也是这样,但是都能够正确的把消息发送到RabbitMQ上的目标队列上面。

难道见鬼了?

我不死心,我重启服务、我重启服务........

我清除IDEA缓存重启........

我重启电脑!

奇迹没有发生,看来只能靠自己了。淡定、淡定!再仔细分析分析报错信息。

发现重点了!消费者服务启动日志里面,在尝试连的RabbitMQ是localhost,而不是我配置文件里面配置的host地址。这也就是配置文件没有生效!

迅速百度,springboot配置文件不生效的原因有哪些。百度里进行筛选有用的信息,发现大部分都是说pom文件有问题。那就检查检查pom文件哪里有问题。啊?我丢!打包方式竟然是pom!

而**pom类型通常用于组织和管理多个模块的项目,它本身不包含代码,只包含项目的配置信息和依赖关系。所以,它也就不会去寻找配置文件。**一般我们使用<packaging>pom</packaging>都是在项目聚合的时候,父工程的pom文件里面使用。比如,我这个包含两个服务的RabbitMQ使用的damon。

在父工程rabbitmq-demo的pom文件里面就需要使用 <packaging>pom</packaging>,并且指定子模块。这样,在父工程的pom文件里面的依赖才能够被两个子项目使用。

找到原因之后,我们就将消费者服务的pom文件中的<packaging>pom</packaging>改成<packaging>jar</packaging>,刷新pom文件,并clean项目。再次启动,成功连上RabbitMQ!

三、总结

遇到问题一定不要慌,认真分析日志信息,一定能够找到蛛丝马迹的。日志信息会让你少走需多弯路!

四、拓展

在我们指定打包类型的时候都是使用的packagin标签。

1、当我们想要打成jar包的时候就使用<packaging>jar</packaging>,不使用该标签的时候,默认也是打成jar包。

2、当我们想要打成war包的时候就使用<packaging>war</packaging>,当我们需要把项目部署在容器中的时候,就使用这种打包方式。

3、当在父工程中的时候都是使用<packaging>pom</packaging>

相关推荐
Peregrine927 分钟前
C++ - > 类和对象
java·c++·算法
一条泥憨鱼29 分钟前
【从0开始学习计算机网络】| ARP 协议:地址解析,ARP 欺骗,链路层寻址
网络·后端·学习·计算机网络
2501_9339232533 分钟前
SpringCloud组件:Eureka服务注册与发现
java·开发语言·后端·spring cloud·eureka
Wang's Blog35 分钟前
Java 中间件之 RabbitMQ 快速入门: SpringAMQP 消息转换器
java·中间件·java-rabbitmq
leikooo37 分钟前
ARTS 1011: 双堆动态对顶求中位数、IPC 注入与空密码串联接管账户与程序从不做决策
后端
合尘猫43 分钟前
AI 项目上线就停:一次事件循环阻塞的完整排查过程
人工智能·后端·python
Re_zero1 小时前
一次 SSE 断流排查:PrintWriter 吞掉了我的 IOException
java·后端
1m555555551 小时前
RAG 工程实战(四):明明召回了正确知识,为什么最终 Top-K 还是漏了?
后端
我是人✓1 小时前
Java核心语法:作用域、循环与大数值处理
java·开发语言·后端
newerp2 小时前
GC Pacer 调优算法:GOGC、GOMEMLIMIT 与容器 OOM 防御
后端·程序员·go