关于 VM options 以及 properties文件的一些理解

背景

之前做项目配数据源信息,一般是把用户名,密码这些都放在一个properties文件中。最近做了个项目是把用户名密码配置在了web容器(tomcat)启动选项里,然后通过${key}注入到properties文件中。

由此产生很多疑问

  1. 容器的启动选项是怎么注入到properties文件中的。
  2. 容器的启动选项设置的属性的使用范围。
  3. properties中配置的属性是怎么注入到spring配置文件中的。
  4. properties中配置的属性的使用范围。

个人理解 (有问题请指教)

在网上找了很久,没有找到说清楚VM options是什么的相关帖子。我就自己理解一下吧。

写了一个demo,最后发现在VM options中配置的参数,可以通过${}占位符在项目的任何位置注入,比如spring的xml配置文件,properties文件以及通过@Value注入java文件中。

可以理解为容器的启动选项配置的属性是整个web容器的全局变量,可以在容器中的所有项目,所有项目中的所有文件中通过${key}引用到。

关于properties文件

紧接着我顺带深入理解了一下properties文件以及properties中定义的属性在spring中的作用域。

基础操作

首先properties就是一个定义键值对的文件,我们可以通过Properties类加载然后通过getProperty("key")来获取value,参考

通常做法:

但是我们用的最多的是在spring的相关配置中使用properties来收集一些配置属性方便修改。

在spring的xml配置文件中使用

    <context:property-placeholder location="classpath:service.properties" ignore-unresolvable="true"/>

来加载properties文件,然后在xml中用${key}来注入对应value,或者在java类属性上用@Value(${key})来注入对应value。

于是我又产生了一个疑问:在xml中引入的properties文件的作用域是什么,是当前xml文件?是spring容器?还是整个项目?

写了一个demo测了一下,发现xml中引入的properties的属性是容器级别的。比如springmvc系统中会有springmvc子容器和spring核心父容器两个容器,在springmvc.xml中引入的properties的属性只能在springmvc子容器中的bean以及同级别xml配置文件中获取到,而spring父容器中的bean则获取不到,反之亦然。

总结:

  1. 容器的启动选项是怎么注入到properties文件中的。解答:我们只需要配置容器启动选项,其他完全由容器实现和处理。
  2. 容器的启动选项设置的属性的使用范围。解答:容器中所有项目,项目中所有文件。
  3. properties中配置的属性是怎么注入到spring配置文件中的。解答:我们只需要引入properties文件,其他由spring实现和处理
  4. properties中配置的属性的使用范围。解答:属性引入的容器

原文地址:https://www.cnblogs.com/qingshan-tang/p/12606830.html

时间: 2024-08-30 15:48:01

关于 VM options 以及 properties文件的一些理解的相关文章

Java读取properties文件工具类并解决控制台中文乱码

1.建立properts文件(error.message.properties) HTTP201= 请求成功并且服务器创建了新的资源 2.在spring-mvc.xml文件(applicationContext-mvc.xml)中配置properties工具类路径及读取properties文件的路径 <bean id="propertyConfigurer" class="com.yjlc.platform.utils.PropertyConfigurer"

Java读properties文件中文乱码问题的解决方法

java读properties文件,包含中文字符的主要有两种: 1.key中包含中文字符的(value中也有可能包含) 2.key中不包含中文字符的(value中有可能包含) 1.key中包含中文字符 可以使用java自带工具native2ascii.exe(Java\jdk1.x.x\bin\native2ascii.exe),转换文件编码格式 示例: native2ascii -encoding 8859_1 c:\a.properties c:\b.properties 即将 c:\a.p

[转] - Configuring Android Studio: IDE &amp; VM Options, JDK, etc

Configuring Android Studio: IDE & VM Options, JDK, etc You should not edit any files in the IDE installation directory. Instead, you can customize the attributes by creating your own .properties or .vmoptions files in the following directories. (This

JAVA使用和操作properties文件

java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties文件中,可以用"#"来作注释,properties文件在Java编程中用到的地方很多,操作很方便.Properties 类存在于包 Java.util 中,该类继承自 Hashtable. 1. getProperty ( String  key) ,   用指定的键在此属性列表中搜索

五种方式让你在java中读取properties文件内容不再是难题

一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC+Mybatis整合开发的项目中通过java程序读取properties文件内容的方式进行了梳理和分析,先和大家共享. 二.项目环境介绍 Spring 4.2.6.RELEASE SpringMvc 4.2.6.RELEASE Mybatis 3.2.8 Maven 3.3.9 Jdk 1.7 Id

Spring中配置和读取多个Properties文件

public class PropertiesFactoryBeanextends PropertiesLoaderSupportimplements FactoryBean, InitializingBean Allows for making a properties file from a classpath location available as Properties instance in a bean factory. Can be used to populate any be

java解析properties文件

在自动化测试过程中,经常会有一些公用的属性要配置,以便后面给脚本使用,我们可以选择xml, excel或者json格式来存贮这些数据,但其实java本身就提供了properties类来处理properties文件,虽然名字叫properties,其实打开它发现就是一个记事本的文件,所以看起来也比较直观,下面是解析properties文件的实现代码. properties文件里存贮的样子是这样的,然后给他保存为xxx.properties即可. gsBAMUserName1=automation_

log4j.properties文件的配置

Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用

Spring 中使用Properties文件

Spring提供了加载Properties文件的工具类:org.springframework.beans.factory.config.PropertyPlaceholderConfigurer. 在Spring容器启动时,使用内置bean对属性文件信息进行加载,在bean.xml中添加如下: <!-- spring的属性加载器,加载properties文件中的属性 --> <bean id="propertyConfigurer" class="org.