起因

这里暂且将自动配置类称之为服务提供方,将使用这个自动配置类的称之为调用方。提供方和调用方都是依靠IDEA自动生成的SpringBoot 项目。提供方有着自己的配置参数,调用方也有着自己的配置参数,调用方使用提供方提供的组件(组件已经装配好特有的参数),问题在于组件的参数注入失效

参数注入方式

这里是为了做实验,刚开始还以为是注解的原因,所以采用了两种配置参数注入方式,以作比较
一、@Value
二、@Configuration’Properties
记一次Spring自动配置类配置冲突问题
记一次Spring自动配置类配置冲突问题

项目结构

记一次Spring自动配置类配置冲突问题
这里就很暴力的把jar给导进来,可以从截图中看出来,就是为了将自动配置类引入,然后在调用方使用

问题描述

现在出现在的问题就是,如果服务方使用yml文件,这个组件就可以使用,参数可以成功注入。但是使用properties,这个组件就会实例化失败(Value形式是因找不到配置字段而启动报错,ConfigurationProperties是参数注入报错)

是不是就很神奇,因为就一定是要yml,为什么properties就不行,讲道理来说两者是可以等价替代的!

问题原因

调用方和提供方的配置文件都叫做application,如果提供方使用properties,那么会在spring里出现两个application.properties文件,调用方会优先采用自己的application.properties文件,但是自动配置类的配置参数是在自己的配置文件中,所以组件实例化失败,所以才会导致使用yml就能成功,但是properties就会失败,yml能保证两者的文件类型不同,对于spring来说还是可以分别的,但是同名同类型的文件就会导致问题发生

相关文章:

  • 2021-11-30
  • 2022-12-23
  • 2022-12-23
  • 2021-10-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-15
  • 2022-12-23
  • 2021-11-25
  • 2022-01-05
  • 2022-12-23
相关资源
相似解决方案