在springboot项目的开发过程中,也许你会遇到这种操蛋的情况——

当你使用@Value注解正用得美滋滋的时候,你尝试启动项目,却报nested exception is java.lang.IllegalArgumentException。就像这样。

  • application.properties文件中你是这样写的

  •  service层中你是这样写的

  • pom文件中你也如下写了

 但是,就是报nested exception is java.lang.IllegalArgumentException,很操蛋。有的说是application.properties中写错了;有的用的application.yml文件时,说是其中的yml语法有问题,比如缩进问题;有的说是@component注解扫描问题......   但上述问题你一一排除之后,发现仍不能解决问题。

所以,此时大概率你要用如下方法解决问题——

也许你的pom文件中resources的配置最初是这样式的

<resources>
      <resource>
        <filtering>true</filtering>
        <directory>src/main/resources</directory>
      </resource>
</resources>

这样写本身没有问题,也许你在之前的项目中这样是可以的,可当你进行项目迁移(比如同步git)后,发现突然就不行了,然后报nested exception is java.lang.IllegalArgumentException。此时只需要将resources作如下修改就行。

<resources>
      <resource>
        <filtering>true</filtering>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
      </resource>
</resources>

总结原因就是,service加载不到properties中预设的value值,此时include即可,希望能够帮到你。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐