解决ssm项目中@value注解无法获取值的问题

2019-02-20  本文已影响0人  有时右逝

前言

公司项目基于ssm结构,在使用spring @value注解的时候出现异常。尝试了许久,一直未能解决,新年伊始,解决历史问题,成为首要任务。

问题

问题是源于我使用swagger配置文档的时候,需要指定host参数。


image.png

该参数来源于


image.png

通过spring.xml的配置是

<context:property-placeholder location="classpath:jdbc.properties" />
    <context:property-placeholder location="classpath:swagger.properties" />

运行程序之后,提示错误。


image.png

解决方案

这里的错误存在2个。


后续

以上配置只解决了正常运行的情况。如果运行单元测试,则依旧报错。
需要修改配置为

    <context:property-placeholder location="classpath*:*.properties" />

区别:
classpath 和 classpath* 区别:
  classpath:只会到你的class路径中查找找文件;
  classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.

另外可能有同学打算在static变量中使用value注解。不好意思,不支持如此调用。

但是可以间接实现。如下

public static String smtpHost;
@Value("${smtpHost}")
public void setSmtpHost(String smtpHost) {
    MailUtil.smtpHost = smtpHost;
}
上一篇 下一篇

猜你喜欢

热点阅读