一、@Value注解的作用。

为了减小耦合度,通常,将一些固定的常量放在配置文件***.properties中。

properties内容定义形式:名称=值

[java] view plaincopy
  1. SAY_COUNT=10
  2. TITLE_COUNT=10
  3. MESSAGE_COUNT=10
  4. BACK_COUNT=10

当需要这些常量的时候,通过加载properties文件,在需要的位置使用这些常量,当需要修改这些常量值的时候,只要在配置文件中修改就可以了。

在没有使用spring之前,想使用配置文件当中的数据必须得自己手工写代码加载配置文件。但是在使用spring的时候,这种操作可以通过在spring中添加一个配置来完成。

[java] view plaincopy
  1. <context:property-placeholder location="classpath:resource/resource.properties"/>

在需要使用的地方,通过使用@Value注解,就可以自动完成注入。

[java] view plaincopy
  1. @Value("${INDEX_TITLE}")
  2. private Integer INDEX_TITLE;

二、获取不到值的情况。

1)当SpringMVC与Spring整合使用的时候,在Controller中无法获取@Value对应的值。(刚开始我就是这种情况,,,,)

产生原因: 只在applicationContext中添加了扫描,没有在SpringMVC对应的配置文件中扫描。

applicationContext加载的是父容器,,父容器在项目启动的时候就被加载了。SpringMVC对应的配置文件加载的是子容器,子容器可以访问父容器的对象,但是不能访问加载的配置文件。所以,如果想在SpringMVC中使用加载的配置文件,需要在SpringMVC对应的配置文件中添加相应的配置即可。

2)在service或者dao层无法获取@Value的数值。

可能情况:有多个applicationContext.xml文件,里面有多个context:property-placeholder,在web容器启动的时候同时加载了这些配置文件,这时候只会有一个配置文件中的context:property-placeholder会被加载,其他的不会被加载。

那么,当需要加载多个properties的时候,如何解决?可以用下面的方法

[java] view plaincopy
  1. <context:property-placeholder location="classpath:resource/*.properties"/>

这样,将所有需要加载的properties放在一个目录之下,通过*.properties就可以加载所有的properties文件。

spring @value相关推荐

  1. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

  2. html+spring boot简单的ajax数据传输实现

    本篇讲解在前后端不分离情况下的html+spring boot的项目数据传输实现 首先,后台我写了三个接口 package com.demo.ajax.controller;import com.de ...

  3. Spring Boot整合Spring Data JPA操作数据

    一. Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 J ...

  4. Spring AOP + Redis解决重复提交的问题

    Spring AOP + Redis解决重复提交的问题 用户在点击操作的时候,可能会连续点击多次,虽然前端可以通过设置按钮的disable的属性来控制按钮不可连续点击,但是如果别人拿到请求进行模拟,依 ...

  5. Spring cloud 微服务docker容器化最佳实践

    Spring cloud 是当下最炙手可热的微服务套件,我们将介绍如何整合Docker容器达到高效快捷的构建发布 采用了dockerfile-maven-plugin插件发布镜像到远程docker主机 ...

  6. ssh(Struts+spring+Hibernate)三大框架整合-简述

    ssh(Struts+spring+Hibernate)三大框架配合使用来开发项目,是目前javaee最流行的开发方式,必须掌握: 注意: 为了稳健起见,每加入一个框架,我们就需要测试一下,必须通过才 ...

  7. Strutsw2与Spring整合流程-简述

    1.      新建WEB工程: 2.      导入struts2开发包,和资源配置文件 ① globalMessages.properties ② struts.properties 3.     ...

  8. spring Bean自动装配

    spring Bean自动装配 自动装配是使用spring满足bean依赖的一种方式. spring会在应用上下文中为某个bean寻找其依赖的bean. spring自动装配需要从两个角度来实现,或者 ...

  9. spring IOC创建对象方式

    spring IOC创建对象方式 通过无参构造来创建 验证方法: 创建实体类: public class User {private String name;public User() {System ...

  10. 第一个spring程序

    第一个spring程序: 第一步:导入jar包. 新建maven项目: <dependency><groupId>org.springframework</groupId ...

最新文章

  1. python version 2.7 required,which was not found
  2. 面完字节跳动,才知道自己的数据结构与算法有多薄弱...
  3. android毛玻璃效果,Android 中实现毛玻璃效果
  4. javascript中var、let、const声明的区别
  5. jpg图片转eps 用于LaTeX
  6. FFMPEG结构体分析之AVCodec
  7. 虚拟机IP桥接与.net
  8. 著名模拟鼠标点击软件小点点被收购
  9. Unity发布四款新产品,加速本土化技术研发
  10. deeplin显示安装空间不够_电视内存不够怎么办?一步到位来搞定
  11. 用计算机怎么按e,在计算器上e的多少次方怎样按
  12. python中用来返回序列的最大函数_Python内置函数____________用来返回序列中的最大元素。...
  13. IOS5短信拦截怎么实现?
  14. [任务书+论文+PPT+源码]基于Android与多媒体的英文学习APP的设计与实现
  15. linux桌面添加第三方软件图标
  16. veket linux应用软件,veket linux
  17. word2vec and glove优缺点
  18. C/C++程序的编译过程
  19. 云计算、大数据、人工智能傻傻分不清楚?本文详解这三者的关系
  20. continue语句可以用在switch语句和3种循环语句中_Java中的循环

热门文章

  1. mysql limit分页知乎_头发一天天的掉,你知道MySQL的Limit有性能问题吗?
  2. java 代码锁_Java 锁的知识总结及实例代码
  3. C#中使用FFMPEG切割、合并视频。
  4. 网页打印物理大小尺寸的单位换算
  5. BCNF/3NF的判断方法
  6. 大数四则运算java(转)
  7. Python 第三方扩展库
  8. 局域网访问虚拟机VMware6.5
  9. 適合.net開發人員的UML自由軟件
  10. android 广播 关闭对话框,Android 对话框、信息提示和菜单