@Value在Controller中取值

一、使用

  @Value("${name}")注解可以获取自定义的properties文件中的name值

二、配置

  如果只是在applicationcontext.xml中配置,那么在service中获取,没有任何问题,但是在controller中是获取取到值的,如果想获取到值,需要在spring-servlet.xml中再配置一遍

!-- 定义环境变量文件 -->
    <bean id="propertyHolder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
        <property name="ignoreResourceNotFound" value="true"/>
        <property name="locations">
            <list>
                <value>classpath*:/template.properties</value>
            </list>
        </property>
    </bean>

三、原因

  applicationcontext.xml 中定义的上下文称根上下文,即WebApplicationContext,这是一个接口类,确切的说,其实际的实现类是XmlWebApplicationContext。这个就是spring的IoC容器,其对应的Bean定义的配置由web.xml中的context-param标签指定。

  contextLoaderListener监听器初始化完毕后,开始初始化web.xml中配置的Servlet,这个servlet可以配置多个,以最常见的DispatcherServlet为例,这个servlet实际上是一个标准的前端控制器,用以转发、匹配、处理每个servlet请求。DispatcherServlet上下文在初始化的时候会建立自己的IoC上下文,用以持有springmvc相关的bean,每个servlet就持有自己的上下文,即拥有自己独立的bean空间,同时各个servlet共享根上下文中定义的bean,可以通过id直接引用applicationcontext.xml 中定义的bean。

  controller的定义在springmvc-servlet.xml定义的上下文中,所以在Controller中使用@Value来获取properties中的name值时,只会在servlet的上下文中查找,如果不在springmvc-servlet.xml配置,肯定是找不到的。

原文地址:https://www.cnblogs.com/geekdc/p/8973467.html

时间: 2024-10-08 23:25:57

@Value在Controller中取值的相关文章

struts2 与 OGNL 表达式,jsp中 利用ognl 在valuestack中取值

在Struts2中,一个请求在最终到达Action的方法之前,Action对象本身会被压入ValueStack(实际上就是放到ValueStack的CompoundRoot中),所以Action对象是CompoundRoot中的一个元素.看下面的代码: public class UserAction { private String username; private Integer age; private boolean valid; //查看用户的详细信息 public String de

从cookie中取值$.cookie()

从cookie中取值: var userid = $.cookie("remoteuserid");例子: function delUser() { var table = $('#grid-user-list'); var chkBoxes = table.find('input.invechk:checked'); if (chkBoxes.length == 0) { showMsgPane('请选择需要删除的用户.', 'prompt'); return false; } va

loadrunner从数据库中取值进行参数化

LoadRunner提供两种参数化取值方式,一种是手动编辑,另一种就是通过连接数据库取值.一般在大型业务并发压力测试时,数据量肯定也都是非常大的,所以手动去编辑就不切实际了,这时用连接数据库的功能就方便了很多. 所需软件: mysql-connector-odbc-5.3.12-win32.msi 安装此软件时,如果提示: 需要先安装:vcredist_x86.exe. 以下以mysql数据库取值为例,进行操作步骤介绍及截图. 1.Parameter List对话框中点击Data Wizard按

ng-model controller中取不到值(input)

一.对于input绑定ng-model默认情况下载控制器中获取不到改变的值 1.在自定义控制器中获取不到改变的值 原因: 1.ng-model取不到值是因为$scope作用域的问题 解决方案: 对于input的ng-model绑定使用对象object方式绑定,可以跨作用于访问. controller中定义一个集合: $scope.data ={ text1 : "", text2: "",} 页面中分别定义 ng-model="data.text1&quo

在properties.xml中定义变量,在application.xml中取值问题

如果为application.xml中的变量赋默认值,同时又在properties.xml中变量赋值,而加载后是取不到properties.xml中的值的问题. 解决这个问题需要加上黑体部分配置: <bean id="sysConfiguration" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">        <property na

java中从实体类中取值会忽略的的问题

在我们java Map中通过get来取值时会忽略的问题是:如果取得一个空值null时,那么.toString()时就会出错,而且不知道是什么原因. 现在我给的具体方法是用条件表达式先判断一下. 例: Map<String, Object> dv = new HashMap<String,Object>(); dv.put("kye", "value"); deviceId = dv.get("kye") != null ?

bootstrap timepicker 在angular中取值 并转化为时间戳

上一篇我们讲到angular对于timepicker的一个封装后的插件,但是由于angular的版本必须是v1.2.30以上的.对于有些大型系统,一时升级angular的版本实在耗费时间.那么可以用这种方法来取值. 页面上的时间格式是这样的: 文件引入 '/bootstrap-datetimepicker.min.css', '/bootstrap-datetimepicker.min.js', '/bootstrap-datetimepicker.zh-CN.js',//中文包 html <d

oracle定时器,调用存储过程,定时从n张表中取值新增到本地一张表中

--创建新增本地数据库的存储过程 create or replace procedure pro_electric_record as begin insert into electric_meter_record(id,basestation_id,name,meter_number,createtime) select sys_guid(),substr(s.sname,0,36),s.sname,s.svalue,sysdate from rtdbvs s where s.sname li

array_slice 从数组中取值

rray_slice() 函数在数组中根据条件取出一段值,并返回. 注释:如果数组有字符串键,所返回的数组将保留键名.(参见例子 4) 语法 array_slice(array,offset,length,preserve) 参数 描述 array 必需.规定输入的数组. offset 必需.数值.规定取出元素的开始位置. 如果是正数,则从前往后开始取,如果是负值,从后向前取 offset 绝对值. length 可选.数值.规定被返回数组的长度. 如果 length 为正,则返回该数量的元素.