springboot配置单独的参数文件

一、介绍

是不是经常用@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文件中填进去的而已。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html cols跨两列,html – CSS奇怪,甚至有2个cols

一个模式中有四篇文章,因此4n的一些偏移应该可以解决问题.这似乎工作(Fiddle):article {color:blue}article:nth-child(4n-1), article:nth-child(4n-2) {color:green}如果你不喜欢减去,加上也是一样的(Fiddle):article {color:blue}article:nth-child(4…

nacos初探--作为配置中心

什么是nacos Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。 官方介绍是这样的: Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提…

教育部统考 计算机应用,9月教育部统考《计算机应用基础》试卷一附答案.doc

9月教育部统考《计算机应用基础》试卷一附答案2015年9月教育部统考《计算机应用基础》试卷一附答案一、单选题1.第三代计算机采用______作为主要的电子器件。A.电子管B.晶体管C.大规模集成电路D.小规模集成电路答案:D2.______领域是计算机应用中最诱人、也是难度大且…

Module build failed: Error: Cannot find module ‘node-sass‘ Require stack报错解决

Module build failed: Error: Cannot find module ‘node-sass’ Require stack报错解决 异常信息 解决方法 设置用淘宝镜像下载 npm install --save-dev node-sass --registryhttps://registry.npm.taobao.org --disturlhttps://npm.taobao.org/dist --sass-binary-sitehtt…

html5显示用户已读取文章,如何查看公众号文章是谁阅读

如何查看公众号文章是谁阅读内容导读:目前微信公众号并没有开放这个权限,不仅不能查看谁阅读了文章,也不能看到粉丝的微信号。这主要是考虑到微信用户的隐私,如果都能看到的话,某些公众号就可能去添加这些微信用户&…

npm的镜像替换淘宝

1.得到原本的镜像地址 npm get registry > https://registry.npmjs.org/2.设成淘宝的 npm config set registry http://registry.npm.taobao.org/yarn config set registry http://registry.npm.taobao.org/3.换成原来的 npm config set registry https://registry.npmj…

xp系统怎样添加桌面计算机名,教你win10系统电脑桌面怎么添加日历

很多用户都会选择在电脑的桌面上建立一个日历小挂件来提醒自己,其实在电脑桌面添加日历,可防止用户耽误工作进程的安排,不知win10系统电脑桌面怎么添加日历的用户,请来看看下面的介绍吧。日历对很多用户来说是非常重要的&#xff…

什么是Nacos?Nacos注册配置中心介绍

一、什么是Nacos 英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心。服务在nacos是一等公民 二、Nacos原理 nacos简单介绍 Nacos注册中心…

矩阵 计算机应用,《计算机视觉算法:基于OpenCV的计算机应用开发》 —3.3 元素级矩阵操作...

3.3 元素级矩阵操作基于元素的(元素级)矩阵操作是计算机视觉中的一类数学函数和算法,它处理矩阵的各个元素,或者说,图像中的每个像素。注意基于元素的操作可以并行化,因此矩阵元素的处理顺序不重要。这个特点是本节函数和算法与本…

微服务系列之ZooKeeper注册中心和Nacos注册中心Nacos和Zookeeper对比

一、ZooKeeper注册中心 Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,推荐使用。 流程说明: 服务提…

2018美国大学计算机科学,美国大学计算机2018最新排名

近些年,除了商科之外,被中国留学生追捧的就是计算机专业,据统计显示,计算机科学是就业市场需求最多的专业之一。美国的计算机技术在世界一直位居前列,因此,很多留学生前往美国深造计算机科学专业&#xff0…

计算机知识探索怎么写,计算机基础知识及探索.doc

PAGEPAGE 23HYPERLINK "/ASPX/602009818/JournalContent/1325923866.aspx"计算机基础知识参考试题及答案解析一、单选题1.1946年诞生的世界上公认的第一台电子计算机是( )。A)UNIVAC-I B)EDVAC C)ENIAC D)IBM650【答案】C)【解析】1946年2月15…

springboot配置跨mapper.xml的全局变量

springboot配置跨mapper.xml的全局变量 有这样的需求,mybatis框架的mapper.xml,即映射文件里,如果需要配置一个全局变量,然后,在所有的mapper.xml里都能拿到使用。 这需求也不苛刻吧~ 后来查了下,发现对…

计算机公共基础知识论文,计算机等级考试二级公共基础知识汇总.doc

计算机等级考试二级公共基础知识汇总.doc计算机等级考试二级公共基础知识第1章 数据结构与算法1.1 算法1.1.1 算法的基本概念算法是指对解题方案的准确而完整的描述。简单地说,就是解决问题的操作步骤。值得注意的是,算法不等于数学上的计算方法&#xf…

springboot项目中关于时间类型转换的格式问题

常常项目里转时间类型出现如下错误。 Can not deserialize value of type java.util.Date from String \"2021-10-24 12:12:12\" : not a valid representation(error: Failed to parse Date value 2018-10-24 12:12:12: Can not parse date\"2021-10-24 12:12…

如何用计算机计算胸围,文胸尺码计算器

文胸尺码计算器也称胸罩尺寸计算器,是根据国际标准制定的文胸尺寸、胸罩尺寸表计算您的文胸尺码。胸围尺寸测量方法如下:水平围绕胸部最高点(乳头)一周的长度,即为您的胸上围尺寸,如测量尺寸时遇到小数,测量时建议采用…

SpringBoot升级到2.0后默认时间格式变化_springboot接收date类型参数

springboot1.x时,请求返回默认将Date类型转换成时间戳: createTime: 1544693261000然而在升级到springboot2.0后,默认返回的时间格式变成了UTC字符串: createTime: "2021-12-13T09:27:41.0000000"对于网页端或安卓端&…

与虚拟现实技术相关联的计算机技术,虚拟现实技术与其他技术的关系是什么?-VR-形象思维VR...

1.虚拟现实技术与可视化仿真技术的关系虚拟现实与可视化仿真技术有着密切的联系:两者都被视为现代图形学的应用主流和技术生长点。可视化仿真着重于将计算机产生的大量数据转化为图形,化抽象思维为形象思维,而虚拟现实则致力于提供和谐的人机…

org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.logException Resolved

场景: spring项目中无法访问到对应controller,查看日志,没有报错,只有warnring: org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.logException Resolved [org.springframework.web.meth…

带桭字的名字_男孩带官运大气的名字有气魄有能力-可爱点

一个好的名字传承了祖辈的血脉烙印,寄托了父母的满心希望和浓重的情意,取一个官运财运旺的名字,相信能让男孩更加充满自信和动力,这里整理了男孩带官运大气的名字的内容,来看看有没有给你们带来灵感呢。1、景辉“景”字…