在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即可,希望能够帮到你。