Spring项目中value注解,@Value不能够读取到配置文件的值,无法成功注入值的问题汇总及解决

3 篇文章 0 订阅
1 篇文章 0 订阅

@Value注解

常规用法

我们都知道通过@Value()注解可以取到我们配置文件的内容,之后我们通过修改配置文件就可以修改我们@Value注解修饰的属性,例如:
@Value注解例子
在这里插入图片描述
我们注解了一个Host:port,因为我们经常需要通过更换地址来改变我们所需要的云端服务器或者数据库地址,而当我们每次改变我们的配置文件就可以通过此方法来改变我们的属性值,而且可以在一个文件中修改多个属性的内容,可以说是一举多得非常方便,同时也不用去修改我们的Java代码更大的提高了效率。但是有时候我们难免会遇到配置了@Value但是取不到我们想要的配置文件中的值的情况。

想要使用我们的配置文件首先要在Spring中将我们的配置文件加载进去

第一种加载方式


<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:bean/spring-web.xml</param-value>
	</context-param>
<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

第二种加载方式

<bean id="sysProperty" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <array>
                <value>classpath:cfg/db/mysql.properties</value>
                <value>classpath:config.properties</value>
                <value>classpath:cfg/db/mongodb.properties</value>
            </array>
        </property>
    </bean>

这是我常用的配置文件的加载方式,但是加载的方法有很多种我们这里主要说其中出现的问题,如果使用了上述加载方式你发现你没有加载到,那么首先先检查你的路径、文件名优培优匹配对,尤其是有同学不小心去掉了Resources的子文件选项;其次需要检查你写这段配置的spring文件有没有加载上,当然这都是明显的一些问题。
下面就是我遇到的一些比较隐秘的问题,第一:既然使用要使用@value把值注入,你的属性首先不能是static的,第二:你在使用的方法也不可以是static 的,第三:你使用这些属性的对象一定要自动装配,无论是使用Resource还是Autowired自动装配(区别一个根据名字一个根据类型装配),不可以自己去创建对象,使用spring就是要去使用它的特性去自动装配。而我出现的问题就是第三种加第二种还是对spring的机制认识的不够,还需要多家练习学习。当然不能排除还有其他问题可能引起属性值取不到,也可以在评论区大家一起交流~
文中如有错误、解释不到的地方欢迎指出大家一起进步~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值