美文网首页
解决ssm项目中@value注解无法获取值的问题

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

作者: 有时右逝 | 来源:发表于2019-02-20 20:03 被阅读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 只能配置1个,配置多个的话则只有第一个生效。因此正常的配置应该是

    image.png
  • 以上虽然解决了配置载入问题,但是由于我的项目是基于ssm 。需要在spring.xml和spring-mvc.xml中均引入该配置。否则依旧找不到配置值。


后续

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

    <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;
}

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/bplkyqtx.html