一、介绍

是不是经常用@Value注解?用过springboot的都知道它是从application.properties文件中引入某个变量的值,是不是已经灰常熟悉了?
默认在springboot启动后,加载application.properties文件,通过@Value("${}"),即可获取到对应的值,使用非常方便。

当然使用久了,发现太多的变量配置到application.properties文件中,就会想到配置一个自定义参数文件,让@Value("${}")这样的方式取值不要再从application.properties中获取,而从自定义的参数文件中获取。

二、理解

实现方法即重新对PropertyPlaceholderConfigurer类的setLocations()方法重新指定配置文件路径就可以了。
通过PropertyPlaceholderConfigurer可以实现将上下文属性信息放在一个properties文件中,同时还可以通过System.setProperty(key, value)这种方式,给容器传递其他参数。

三、方法

1、加配置类

配置方法和spring一样,都是通过加配置类,当然springboot只需要加一个这样的配置类:

import org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;/*** 重新修改@Value注解注入的路径*/
@Configuration
public class ValueConfig {@Beanpublic PreferencesPlaceholderConfigurer getPreferencesPlaceholderConfigurer(){PreferencesPlaceholderConfigurer configurer = new PreferencesPlaceholderConfigurer();Resource resource = new ClassPathResource("/data.properties");configurer.setLocation(resource);return configurer;}
}

其中上边的data.properties即是新的配置文件路径。

2、加参数文件

然后在resources下加一个data.properties文件即可。

最后就可以在data.properties文件里配置自己的参数。

spring.file.uploadpath=c:/upload/wfvideo

3、使用

使用没有变化,还是使用最方便的@Value("${spring.file.uploadpath}")方式即可,你会发现配置内容都是从data.prooperties文件来了,实现了与application.properties的分离。

四、问题

又回到开始,为什么@Value注解读配置文件时,会默认从application.properties来获取呢?它是如何知道它呢?

个人理解:

我还没看源码(看不懂~~),首先application.properties文件在springboot启动后,会加载到容器中,里边的配置参数已经进入到spring上下文,维护进一个地方,并且以map那种形式,key=value键值对存储。

这时候,你通过对PropertyPlaceholderConfigurer类的setLocations()方法重新指定配置文件,并写了一个data.properties文件,这时候data.properties里也相当于加入到spring前边维护配置信息的map中,但是map的特性都知道,如果有重名的key,那肯定以后者为主。

所以这么看来,并不是@Value注解,开始就认识application.properties文件,而是它压根不是从application.properties文件中获取东西,也不认识application,而是从它们共同的老板,spring上下文维护的一个配置类中,类似刚才说到的一个map的东西中找东西,而里边的东西默认是application.properties文件中填进去的而已。

个人感觉可能是这么回事,可能不对~~~,欢迎评论指导

springboot配置单独的参数文件相关推荐

  1. 跟着团子学SAP SD-RRB(按资源开票)流程演示及核心配置(DIP参数文件) DP80/DP81/DP90/DP91

    在企业的日常销售业务中,有一类常见的销售场景是根据实际消耗的资源(消耗的人工.物料等)为基础去向客户进行开票,比如Time&Material类型的合同.这类业务场景可以统称为RRB的业务模式, ...

  2. 小觅双目相机自带参数配置ORBSLAM3双目参数文件

    ORBSLAM3相机需要的参数 打开/home/knight/ORB_SLAM3/Examples/Stereo/EuRoC.yaml,以这个开源数据集的参数为模板. 1.Camera.type: & ...

  3. SpringBoot配置多数据源数据库

    ** 一.SpringBoot + Druid + Mybatisplus 使用注解整合 ** 主要依赖包: spring-boot-starter-web mybatis-plus-boot-sta ...

  4. SAP-PS-配置篇02-项目参数文件OPSA-基本控制

    结合配置篇01项目参数文件的概览,相信你已经了解了个大概,但具体每项是怎么控制项目的什么功能,还是模棱两可. 没关系,咱们慢慢来,一点点来编制属于我们自己的知识图谱. 那么,今天主要总结一下基本控制页 ...

  5. AG阅读总结10.4.1——参数文件简介

    1.参数文件简述:  在oracle数据库中,参数文件包含了所有的数据库配置信息,它非常重要.我认为如果 要把oracle管理好,必须要做到对参数及参数文件的了如指掌.但是,oracle数据库中数据是 ...

  6. oracle数据库配置助手来初始化参数,使用服务器参数文件(SPFILE)管理初始化参数...

    传统上,Oracle数据库的初始化参数存储在文本初始化参数文件中.为了更好的可管理性,您可以选择在二进制服务器参数文件中维护初始化参数,该文件在数据库启动和关闭期间保持不变.本节介绍服务器参数文件,并 ...

  7. SpringBoot整合nacos实现参数配置

    SpringBoot整合nacos实现参数配置 1.nacos安装 2.项目配置 配置文件 3.nacos配置 4.启动 1.nacos安装 首先,这里的版本号用的是linux的1.4.1 链接:ht ...

  8. aop springboot 传入参数_java相关:springboot配置aop切面日志打印过程解析

    java相关:springboot配置aop切面日志打印过程解析 发布于 2020-3-31| 复制链接 摘记: 这篇文章主要介绍了springboot配置aop切面日志打印过程解析,文中通过示例代码 ...

  9. informatica 参数文件配置

    Informatica 中 parameter file 参数文件配置规则: 参数文件的头部内容 [Global] All Integration Services, Integration Serv ...

最新文章

  1. 记工作中的git遇到的问题
  2. Flash常用快捷键大全 (hotkey)
  3. HDU 4609 3-idiots(FFT)
  4. 前端windows下常用的CMD 命令归纳
  5. ansible-playbook Roles include
  6. openCV之中值滤波均值滤波(及代码实现)
  7. 在构建好XPE操作系统上增加EWF功能
  8. 谷歌浏览器截取长屏幕(全屏截图)
  9. 微信小程序实现使用百度云 人脸录入人脸识别功能
  10. 离线脱机版个人笔记软件的选择
  11. 微信接口类php,【微信接口库】分享10个常用的php微信接口类
  12. Tensor.shape[0]的理解
  13. Git提交记住用户名和密码
  14. 美通企业日报 | 海信发布中国首款社交电视;阿里与VEX将成立高校机器人联盟...
  15. 计算机一级考试怎么分栏,全国高等学校计算机等级考试(一级)理论汇总_分栏
  16. 利用Python与HFSS联合仿真设计一个微带天线
  17. 为什么说CUDA是NVIDIA的护城河?
  18. quick-cocos2d-x下载文件
  19. java正则表达式 n_如何将a^nb^n与Java正则表达式匹配?
  20. 时间怎么算用计算机,时间的来源、表示、计算机计时和时间校准全面详细分析...

热门文章

  1. python文本词频统计是什么_python 大批量文本分词 以及词频统计 (高效处理案例)...
  2. python 编码 解码 读写文件
  3. sql更改完整模式报错_SQL的完整形式是什么?
  4. css复选框样式_使用CSS样式复选框
  5. b树范围查找_使用段树查找最大查询范围
  6. 你必须知道的session与cookie
  7. Windows7搭建FTP文件
  8. excel删除行 uipath_学会这8个Excel神技巧,轻松告别零基础!
  9. 串的块链存储c语言栈,小蚂蚁学习数据结构(18)——串的块链的代码实现
  10. xml层级工具_.NET的类型层次查看工具,ClassHierarchyViewer,0.3.0.1