千家信息网

Spring中怎样动态读取配置文件

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍Spring中怎样动态读取配置文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Spring 动态读取配置文件需求背景最近碰到的需求大概是这样,我们要在一个现有
千家信息网最后更新 2026年11月01日Spring中怎样动态读取配置文件

这篇文章主要介绍Spring中怎样动态读取配置文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Spring 动态读取配置文件

需求背景

最近碰到的需求大概是这样,我们要在一个现有的项目基础上进行二次开发,但又不愿意碰原有项目里的代码。所以采用了Maven依赖的方式--新建一个Maven项目作为主要开发环境,将原有项目作为Maven依赖(war形式)引入进来。这样在新建的扩展项目中打包出来的war将会是合并两个项目的所有代码。

而在实际搭建的过程中碰到这样一个问题,Spring配置文件中的 只允许存在一个, 而且这个机会已经被原有项目使用了--这种说法并不严谨,所以以下给出三种解决方案:

方案一

以上关于的说法并不严谨,其实多次添加也不会报错; 但只会有一个生效(含义是 如果spring从所设置的配置文件集合中没有读取到属性去替换占位符,就会报错, 除非设置 ignore-unresolvable ) ,如果按照如下设置方式,就可以避免这种情况,并接触本次需求。

但是这样带来的坏处就是:

1. 将发现错误的时机推迟到了运行时,这在系统比较庞大时实在是大忌。

2. 属性重复时的替换危机,这种BUG想要找出来,耗费的时间和精力想想就不寒而栗。

方案二

第二个方法 就是BeanFactoryPostProcessor接口,注意该接口的回调时机早于占位符替换 操作。

// BeanFactoryPostProcessor.postProcessBeanFactory@Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {    // 我们自己去读取指定的配置文件    Properties prop = null ;    try {        prop = PropertiesLoaderUtils.loadAllProperties("extend/db.properties", Thread.currentThread().getContextClassLoader());    } catch (IOException e) {        e.printStackTrace();    }    if(null == prop){        return;    }    // 注入到特定的Bean的特定属性中    BeanDefinition beanDefinition = beanFactory.getBeanDefinition("dataSource_extend");    beanDefinition.getPropertyValues().add("url", prop.getProperty("db.sd.url"));    beanDefinition.getPropertyValues().add("driverClassName",prop.getProperty("db.sd.driverClassName"));    beanDefinition.getPropertyValues().add("username", prop.getProperty("db.sd.username"));    beanDefinition.getPropertyValues().add("password", prop.getProperty("db.sd.password"));       super.postProcessBeanFactory(beanFactory);}

方案三

还有一种方法就是使用Spring的父子容器的关系,将这个 和依赖它的Bean全部注册到一个全新容器中,然后将该容器作为现有容器的Parent。此方法过去取巧,本人没有实际去尝试。

动态读取配置文件中的信息

1、首先是写一个配置文件,方便动态加载

jedis.properties

key-value形式保存

1、利用类加载器等读取配置文件

1.读取配置文件

InputStream is=JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");

2.创建properties对象

Properteis pro=new Properties();

3.关联文件

pro.load(is);

4.然后在项目中可以动态加载key获取到value值

以上是"Spring中怎样动态读取配置文件"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

文件 配置 项目 动态 容器 方案 就是 属性 需求 严谨 代码 内容 实际 形式 接口 方式 方法 时机 篇文章 说法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手磨咖啡 上海挚品互联网科技有限公司 小米移动互联网科技园 百单网互联网科技有限公司怎么样 互联网科技公司经营范围 互联网金融监管科技数据 科技互联网项目 厦门中拓互联网络科技有限公司 科技互联网公司装修 友谊互联网络科技 汉立互联网科技有限公司联系电话 福州新华互联网科技学校 知乎 江阴互联网智能科技产品进口 畅思互联网科技 互联网科技快讯热点 上海创道互联网络科技有限公司 广州有谷有贝互联网科技有限公司 玉溪新华互联网科技怎么选 瑞安市蟠桃会互联网科技有限公司 广州全民伙伴互联网科技有限公司 南京欣网互联网络科技有限公司 湖南永感互联网科技有限公司 互联网科技巨头监管 厦门中拓互联网络科技有限公司 来此购互联网科技有限公司 搜狐科技互联网 洛阳昕诺飞互联网科技有限公司 众安科技工业互联网合作 第三届互联网大会安防黑科技 伍佰万互联网科技是干嘛的
0