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,一经查实,立即删除!

相关文章

nacos初探--作为配置中心

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

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…

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 服务的注册中心,工业强度较高,可用于生产环境,推荐使用。 流程说明: 服务提…

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

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

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

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

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

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

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

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

springboot基于mybatis扫描jar包中的controller、service、dao、xml

springboot基于mybatis扫描jar包中的controller、service、dao、xml 最近有这样的需求,是将某个业务模块接口,比如新闻的接口模块 作为一个公共固定的模块,整个包括controller 、model 、mapper 、mapper .xml ,都通过jar 包的形…

java 后台和前端的消息提醒_滴滴Java后台3面题目:网络+内存溢出+各种锁+高性能+消息队列...

一面自我介绍项目介绍JVM类加载机制java的垃圾回收器都有哪些,说下g1的应用场景,平时你是如何搭配使用垃圾回收器的。红黑树的设计经常使用的设计模式?以及UML设计?hashmap实现的的数据结构是什么样的?当hash冲突过多时…

springboot 配置多个请求服务代理

springboot 配置服务代理 有时候,我们可能有下边这样的需求: 即,针对于分布式服务,我们会有多种业务接口服务,但是服务器上可能只要求开放一个服务的端口,比如上图的restA项目端口是对外开放的&#xff0…

主板上的jrgb接口干什么用_用思维导图,解读选配主板的过程,重点解读兼容与接口的搭配技术...

本文用思维导图,解读选配主板的过程,重点解读兼容与接口的搭配技术,选择了5块不同主板,说明主板内容。重点提示,主板决定一台计算机能否稳定运行。任务描述:重点解读兼容与接口的搭配技术,解读选配主板的过…

Linux启动Mysql

关于Linux上安装Mysql可以查看之前的博客:https://blog.csdn.net/qq_43842093/article/details/120401076 Linux启动Mysql 下查看mysql服务的两种方式: 方式一: [rootlocalhost bin]ps -ef|grep mysql方式二: [rootlocalhost…

springboot配置shiro多项目实现session共享的详细步骤

springboot配置shiro多项目实现session共享的详细步骤 公司需要这样的需求: 有两个项目master 主项目、suiteone 项目,两个项目各自由shiro 安全框架管理,当不能登录时,都无法访问,但当登录了其中一个,再…

shiro框架---关于多项目之间验证为什么需要共享session

关于多项目之间登录验证为什么需要共享session 服务器上部署了两个项目,登录之后才可以访问其中的接口。现在想要实现,当登录项目1成功后,可以不需要再登录项目2,直接可以访问项目2中的接口。 大部分人都会想到,共享s…

怎么黑学校计算机室的电脑,大学计算机室变身黑网吧 校方:有需求

河南经贸职业学院计算机房在课间向学生收费办卡使用,被指变相开设“网吧”,一些学生痴迷于网络游戏中。对此,校方向记者表示:“上课时间不收费,课外时间有偿使用,学生有上网需求。”计算机房向学生收费玩游…

Linux重置Mysql密码_解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost

Linux重置Mysql密码 一般这个错误是由密码错误引起,解决的办法自然就是重置密码。 假设我们使用的是root账户。 1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下: #vim /etc/my.cnf(注:windows下修改的是my.ini) 在…

excel 公式 平移 引用单元格_不学会这3个Excel隔列求和函数公式,你只能一个个单元格去相加...

Excel中的求和,并不是你们想的123那么简单。有单条件求和、多条件求和,合并单元格求和,隔列求和等等。有关求和的函数也很多,例如SUM函数、SUMIFS函数、还有与这两个函数结合使用的其它函数等等,不知道你们了解了多少。…