纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

@Value在controller无法获取值 Spring注解@Value在controller无法获取到值的解决

Thinkingcao   2021-11-18 我要评论
想了解Spring注解@Value在controller无法获取到值的解决的相关内容吗Thinkingcao在本文为您仔细讲解@Value在controller无法获取值的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Spring注解,注解@Value,controller无法获取值,Spring注解@Value下面大家一起来学习吧。

一、前言

说到@Value注解用过的应该都知道这是Spring3的一个注解通过@value注解的方式获取properties文件中的属性值大大简化了我们读取配置文件的代码

想要通过@Value注解读取配置文件属性的值那么首先必须要配置properties文件的加载让Spring将properties的文件中的内容加载进Spring容器中进行管理从而可以实现通过@Value注解读取配置文件属性的值。

二、properties加入到Spring容器中有两种方式

1、以注入bean的形式

<bean id="appProperty"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <array>
            <value>classpath:weixin.properties</value>
        </array>
    </property>
</bean>

2、以下面这种形式

加载多个properties文件使用隔开

	
    <!-- 加载配置属性文件 -->
	<context:property-placeholder ignore-unresolvable="true"        
	location="classpath:jeesite.properties,classpath:weixin.properties" />

三、将properties注册到Spring容器

1、weixin.properties内容以键值对(key = value)形式存放

2、@Value使用

以 @Value("${key}")的形式获取properties中key对应的value值 , 以下为获取value值得代码截图

5、存在问题

问题 :但是上述步骤还存在一个问题就是我在Service中通过 @Value("${token}") 可以获取到token的值但是在controller中无法获取到token的值若要在Controller层也使用@Value访问properties配置的话需要在xxx-servlet.xml(我这里是Spring-mvc.xml)中也定义properties配置文件。

解决 : 必须在Spring-mvc.xml中加入

	
    <!-- 加载配置属性文件 -->
	<context:property-placeholder ignore-unresolvable="true"        
	location="classpath:jeesite.properties,classpath:weixin.properties" />

四、总结

如上所示同样的代码写在在业务层运行时能取到正确的值但在控制层却取得了@Value注解中的Key(@Value注解有个特点如果取不到值那么不是返回一个null而是返回Key)。

原因是controller注册在dispatcherservlet-servlet.xml代表的Spring MVC的容器中而service则注册在application-context.xml代表的Spring的容器中。

如果context:property-placeholder只注册在Spring的容器中那么自然只有业务层的类可以取到enable-upload-image的值而控制器取不到值。 解决方法就是把各种context:property-placeholder在两个容器中都注册一下。如:

并且现在可以从属性文件读取这只是@Value其中一小部分用法详细请查阅资料这次记录只是记录我在项目中所遇到的问题方便记忆以防止自己以后再入坑有纰漏请指出不喜勿喷!

以上为个人经验希望能给大家一个参考也希望大家多多支持。


相关文章

猜您喜欢

  • MUI区域滚动 基于python实现MUI区域滚动

    想了解基于python实现MUI区域滚动的相关内容吗衡辉在本文为您仔细讲解MUI区域滚动的相关知识和一些Code实例欢迎阅读和指正我们先划重点:python,MUI区域滚动,MUI区域滚动的实现,MUI区域滚动下面大家一起来学习吧。..
  • Django 序列化 Django 序列化的具体使用

    想了解Django 序列化的具体使用的相关内容吗等到的等待在本文为您仔细讲解Django 序列化的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Django,序列化下面大家一起来学习吧。..

网友评论

Copyright 2020 www.tdogsoftware.com 【零度软件园】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式