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

首先必须要配置properties文件的加载bean:在spring的配置文件中加入:让spring将properties的文件中的内容加载进spring容器中,将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" />

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

4、@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其中一小部分用法,详细请查阅资料,这次记录只是记录我在项目中所遇到的问题,方便记忆,以防止自己以后再入坑,有纰漏请指出,不喜勿喷!

作者:自由不过一种漂泊
原文:https://blog.csdn.net/Thinkingcao/article/details/80620240

Spring注解@Value获取属性文件值且解决在controller无法获取到值的问题相关推荐

  1. Spring依赖注入的方式、类型、Bean的作用域、自动注入、在Spring配置文件中引入属性文件...

    1.Spring依赖注入的方式 通过set方法完成依赖注入 通过构造方法完成依赖注入 2.依赖注入的类型 基本数据类型和字符串 使用value属性 如果是指向另一个对象的引入 使用ref属性 User ...

  2. [转载]spring+mybatis加载属性文件设置数据源失败原因及解决方案 - 泡在网上的日子

    spring+mybatis加载属性文件设置数据源失败原因及解决方案 - 泡在网上的日子 http://www.jcodecraeer.com/a/chengxusheji/java/2013/062 ...

  3. java注解接收上传文件,前台:Input type=file 后台获取文件内容用的是spring注解,当地环境上传图片是好的,发布到服务器上图片读取不到,求大神指点...

    当前位置:我的异常网» Java Web开发 » 前台:Input type="file" 后台获取文件内 前台:Input type="file" 后台获取文 ...

  4. Spring之使用外部属性文件

    先导入C3P0数据源 1.新建db.properties user=root password=langsin driverClass=com.mysql.jdbc.Driver jdbcUrl=jd ...

  5. IDEA无法通过类加载器获取resources文件夹配置文件解决办法

    问题描述:如果IDEA无法通过类加载器获取resources文件夹配置文件,一定是Classpath编译文件没有导致的. 1.在通过配置文件来获取文件信息时,在resouces文件中放入了filena ...

  6. mysql fetchall获取不到数据_解决pymysql cursor.fetchall() 获取不到数据的问题

    1.之前的写法(不报错): data = cursor.fetchall() data_name = data[0]['task_type'] 2.简洁的写法(报错): data = cursor.f ...

  7. spring 通过编程来获取属性文件

    配置可以读取属性: <beans profile="dev"><context:property-placeholder ignore-resource-not- ...

  8. html 获取视频文件的宽高尺寸,怎么获取视频的宽度-解决方案

    html代码 <video id="video" loop preload="auto" autoplay><source src=" ...

  9. python获取服务器文件svn版本信息_如何编程获取SVN版本号?

    您可以在命令行上使用"svn info"获取签出的当前修订号. 例如:$ svn info Chemin : . URL : http://.../trunk Racine du ...

最新文章

  1. http://www.cnblogs.com/youfan/articles/3216816.html
  2. [转]深入理解CSS中的层叠上下文和层叠顺序
  3. palm基础----7 获取系统信息
  4. 图像处理库OpenCV参考网址
  5. 1050 循环数组最大子段和
  6. HTML和CSS初级前端面试题汇总(持续补充)
  7. 发现Java程序中的Bug
  8. 领域模型中的各种角色
  9. full outer join 与full join的区别_sleep、yield、join都是干啥的? sleep与wait有啥区别?中篇[十五]...
  10. 《剑指Offer》题目:合并两个排序的链表
  11. GitHub 源代码疑遭泄漏
  12. CSS flex 布局 一些基本属性应用
  13. VMware虚拟机双屏显示
  14. Codevs P1066 引水入城 2010年NOIP全国联赛提高组
  15. 七问西方主流经济学,考考你的经济学常识
  16. 苹果手机可以投影到墙上吗_怎么将手机上的投影到电视上或墙上?
  17. 知道创宇创始人赵伟荣登“中国产业创新百人榜”
  18. java五子棋的重要算法讲解_[Java五子棋小游戏-Ai算法精讲以及实现]-02--高级算法初步...
  19. STM32填坑:时钟使能必须在外设初始化之前
  20. VC dll 注入之钩子注入

热门文章

  1. 参加金蝶OperaMasks-WebFramework成都推广活动后的感想
  2. C++中特定宏_FUNCTION_
  3. linux 视频转gif,GitHub - alinuxsa/VideoToGIF: video to gif 视频转gif制作表情包插件(可以添加文字)...
  4. 五种常用的异常值检测方法(均方差、箱形图、DBScan 聚类、孤立森林、Robust Random Cut Forest)
  5. 初等数论--整除--线性组合与最大公因数之间的关系
  6. 建立新冠病毒群体免疫屏障——数学建模
  7. 【Flask】自定义转换器
  8. [Issue Fixed]-Pulse r9.1 embedded browser install failure
  9. [web安全]深入理解反射式dll注入技术
  10. 【网络安全】}ofCMS代码审计