zoukankan      html  css  js  c++  java
  • @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配置,肯定是找不到的。

  • 相关阅读:
    【原】yield的最基本用法
    【转】C#.net拖拽实现获得文件路径
    【原】.Net之美学习笔记-第1章-1.1.1值类型
    【转】怎样将DataGridView中绑定的表的列名改成中文
    【转】WPF获取外部EXE图标最简单的方法
    【转】C# Excel 导入到 Access数据库表(winForm版)
    【转】SQL2008清除日志
    【原】监视程序运行时间
    【转】MSSQL获取指定表的列名信息,描述,数据类型,长度
    【原】接口
  • 原文地址:https://www.cnblogs.com/geekdc/p/8973467.html
Copyright © 2011-2022 走看看