lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读

 

 

背景

之前做项目配数据源信息,一般是把用户名,密码这些都放在一个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中配置的属性的使用范围。解答:属性引入的容器
posted on   白露~  阅读(796)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示