spring @value
一、@Value注解的作用。
为了减小耦合度,通常,将一些固定的常量放在配置文件***.properties中。
properties内容定义形式:名称=值
- SAY_COUNT=10
- TITLE_COUNT=10
- MESSAGE_COUNT=10
- BACK_COUNT=10
当需要这些常量的时候,通过加载properties文件,在需要的位置使用这些常量,当需要修改这些常量值的时候,只要在配置文件中修改就可以了。
在没有使用spring之前,想使用配置文件当中的数据必须得自己手工写代码加载配置文件。但是在使用spring的时候,这种操作可以通过在spring中添加一个配置来完成。
- <context:property-placeholder location="classpath:resource/resource.properties"/>
在需要使用的地方,通过使用@Value注解,就可以自动完成注入。
- @Value("${INDEX_TITLE}")
- 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的时候,如何解决?可以用下面的方法
- <context:property-placeholder location="classpath:resource/*.properties"/>
这样,将所有需要加载的properties放在一个目录之下,通过*.properties就可以加载所有的properties文件。
spring @value相关推荐
- spring boot项目 中止运行 最常用的几种方法
spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...
- html+spring boot简单的ajax数据传输实现
本篇讲解在前后端不分离情况下的html+spring boot的项目数据传输实现 首先,后台我写了三个接口 package com.demo.ajax.controller;import com.de ...
- Spring Boot整合Spring Data JPA操作数据
一. Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 J ...
- Spring AOP + Redis解决重复提交的问题
Spring AOP + Redis解决重复提交的问题 用户在点击操作的时候,可能会连续点击多次,虽然前端可以通过设置按钮的disable的属性来控制按钮不可连续点击,但是如果别人拿到请求进行模拟,依 ...
- Spring cloud 微服务docker容器化最佳实践
Spring cloud 是当下最炙手可热的微服务套件,我们将介绍如何整合Docker容器达到高效快捷的构建发布 采用了dockerfile-maven-plugin插件发布镜像到远程docker主机 ...
- ssh(Struts+spring+Hibernate)三大框架整合-简述
ssh(Struts+spring+Hibernate)三大框架配合使用来开发项目,是目前javaee最流行的开发方式,必须掌握: 注意: 为了稳健起见,每加入一个框架,我们就需要测试一下,必须通过才 ...
- Strutsw2与Spring整合流程-简述
1. 新建WEB工程: 2. 导入struts2开发包,和资源配置文件 ① globalMessages.properties ② struts.properties 3. ...
- spring Bean自动装配
spring Bean自动装配 自动装配是使用spring满足bean依赖的一种方式. spring会在应用上下文中为某个bean寻找其依赖的bean. spring自动装配需要从两个角度来实现,或者 ...
- spring IOC创建对象方式
spring IOC创建对象方式 通过无参构造来创建 验证方法: 创建实体类: public class User {private String name;public User() {System ...
- 第一个spring程序
第一个spring程序: 第一步:导入jar包. 新建maven项目: <dependency><groupId>org.springframework</groupId ...
最新文章
- python version 2.7 required,which was not found
- 面完字节跳动,才知道自己的数据结构与算法有多薄弱...
- android毛玻璃效果,Android 中实现毛玻璃效果
- javascript中var、let、const声明的区别
- jpg图片转eps 用于LaTeX
- FFMPEG结构体分析之AVCodec
- 虚拟机IP桥接与.net
- 著名模拟鼠标点击软件小点点被收购
- Unity发布四款新产品,加速本土化技术研发
- deeplin显示安装空间不够_电视内存不够怎么办?一步到位来搞定
- 用计算机怎么按e,在计算器上e的多少次方怎样按
- python中用来返回序列的最大函数_Python内置函数____________用来返回序列中的最大元素。...
- IOS5短信拦截怎么实现?
- [任务书+论文+PPT+源码]基于Android与多媒体的英文学习APP的设计与实现
- linux桌面添加第三方软件图标
- veket linux应用软件,veket linux
- word2vec and glove优缺点
- C/C++程序的编译过程
- 云计算、大数据、人工智能傻傻分不清楚?本文详解这三者的关系
- continue语句可以用在switch语句和3种循环语句中_Java中的循环