一、背景故事

   前阵子我接手了公司另外一个同事手里的项目,项目是用的springboot 写的,但是比较坑的就是这个项目写的有点不伦不类。虽然是用的springboot,但由于他是拿了一堆代码拼凑起来的,估计他没去研究springboot的常规设置,所以用了一个很直接的办法,把所有配置信息都塞到application.properties文件里面,然后不同环境的配置文件用起来每次都把application文件覆盖掉。然后在代码里载入application.properties文件,来作为读取配置文件的公共静态方法。

  我刚接手代码的时候只是发现配置文件各种混乱,也没多想,上来就把配置文件全部整理了一遍。整理完后,我就尝试启动服务,发现各种报错,配置文件读取错误。我一惊,翻了代码才发现上面说的大坑。那么下面我就记录下我自己某度了好久,才想到的改动最小的办法。原谅我水平不是太高。

二、代码

  1.首先是原先的读取配置文件的公共方法。

public class ConfigUtil {
/**
* 日志.
*/
private static Logger logger = Logger.getLogger(ConfigUtil.class); // 初始化配置文件
private static Properties pro = new Properties();
static {
final Resource resource = new ClassPathResource(
"/META-INF/properties/application.properties");
InputStream ips = null;
try {
ips = resource.getInputStream();
pro.load(ips);
} catch (final IOException e) {
logger.info(e.getMessage());
} finally {// QKX 20131223关闭输入流
try {
if (ips != null) {
ips.close();
}
} catch (final IOException e) {
logger.info(e.getMessage());
} }
} // 获取配置文件的中配置的值
public static String getValue(final String key) {
return pro.getProperty(key).trim();
}
}

  这样的问题就在于我把配置文件拆成这种形式的时候,他还是只能读取到application.properties中的属性,读取不了其他的。

  

  2.由于项目已经上过线了,所以想尽量少改动,所以我就思考只改这个公共方法,不要动其他业务的代码。于是就变成了下面的样子。

@Component
public class ConfigUtil { @Autowired
private Environment env; private static Environment staticEnv; @PostConstruct
public void init() { staticEnv = env;
} // 获取配置文件的中配置的值
public static String getValue(final String key) { return staticEnv.getProperty(key).trim();
}
}

  3.这样确实能够读取配置文件,但是有一个问题,就是在这个bean被加载之前,这个方法还是无效的。具体的顺序你们看自己对应的项目,我这里就只有主类中的一些bean和一个队列线程。那么这里我就用@Value注解来读取相关属性就解决了。

关于springboot配置文件的另类读取方法的更多相关文章

  1. java读取配置文件的几种方法

    java读取配置文件的几种方法 原文地址:http://hbcui1984.iteye.com/blog/56496         在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配 ...

  2. java读取.properties配置文件的几种方法

    读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):一.通过jdk提供的java.util.Properties类.此类继承自java.util. ...

  3. SpringBoot 配置文件存放位置及读取顺序

    SpringBoot配置文件可以使用yml格式和properties格式 分别的默认命名为:application.yml.application.properties 存放目录 SpringBoot ...

  4. 【转载】java读取.properties配置文件的几种方法

    读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):一.通过jdk提供的java.util.Properties类.此类继承自java.util. ...

  5. 【日常错误】spring-boot配置文件读取不到

    最近在用spring-boot做项目时,遇到自定义的配置文件无法读取到的问题,通过在appcation.java类上定义@PropertySource(value = {"classpath ...

  6. SpringBoot学习笔记:读取配置文件

    SpringBoot学习笔记:读取配置文件 配置文件 在以往的项目中,我们主要通过XML文件进行框架配置,业务的相关配置会放在属性文件中,然后通过一个属性读取的工具类来读取配置信息.在SpringBo ...

  7. Springboot 配置文件加解密

    功能介绍 在Spring boot开发过程中,需要在配置文件里配置许多信息,如数据库的连接信息等,如果不加密,传明文,数据库就直接暴露了,相当于"裸奔"了,因此需要进行加密处理才行 ...

  8. SpringBoot配置文件 application.properties详解

    SpringBoot配置文件 application.properties详解   本文转载:https://www.cnblogs.com/louby/p/8565027.html 阅读过程中若发现 ...

  9. 【log4j2 加载配置文件】 加载配置文件的三种方法

    log4j 2读取的配置文件可以分为三类:src下的配置文件.绝对路径的配置文件.相对路径的配置文件. package com.herman.test; import java.io.File; im ...

随机推荐

  1. spark_运行spark-shell报错_javax.jdo.JDOFatalDataStoreException: Unable to open a test connection to the given database.

    error: # ./spark-shell Caused by: javax.jdo.JDOFatalDataStoreException: Unable to open a test connec ...

  2. strcpy、strncpy、strlen、memcpy、memset、strcat、strncat、strcmp、strncmp,strchr

    1.strcpy #include<stdio.h> #include<assert.h> char *mystrcpy(char *dest, const char *src ...

  3. 小小粉丝度度熊 二分答案 + two pointer

    http://acm.hdu.edu.cn/showproblem.php?pid=6119 发现自己的two pointer能力超弱. 这题是合并时间后,二分答案. 可以知道对于每个时间区间,合法的 ...

  4. Git忽略提交规则

    Git忽略提交规则 转自:https://www.cnblogs.com/kevingrace/p/5690241.html 在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等 ...

  5. asp.net mvc网站的发布与IIS配置

    一.安装IIS (如果服务器上已经安装了就跳过) 控制面板——程序——程序功能——打开或关闭windows功能——勾选Inertnet信息服务下面所有选项——确定 二.获取发布文件(如果已经发不好就跳 ...

  6. .Net core使用XRPC创建远程接口的Actor对象

    Actor是一种高并发处理模型,每个Actor都有着自己的状态有序消息处理机制,所以在业务处理的情况并不需要制定锁的机制,从而达到更高效的处理能性.XRPC是一个基于远程接口调用的RPC组件,它可以简 ...

  7. Android模拟器使用SD卡

    在Android的应用开发中经常要用到与SD卡有关的调试,本文就是介绍关于在Android模拟器中SD卡的使用 一.      准备工作 在介绍之前首先做好准备工作,即配好android的应用开发环境 ...

  8. python socket客户端

    #./usr/bin/env python#coding:utf-8import socket#.....ip...print ('server start...')ip_port = ('144.3 ...

  9. 扔掉360:Linux下无线网卡作WiFi路由器(转薄荷开源网)

    这个话题很多人感兴趣,毕竟现在是无线互联时代.手机一族到外面去,首先关心的就是有没有 WiFi.Windows 7 用户可以安装 360 的软件,把笔记本电脑配置成路由器,供手机或其他电脑上网. 在 ...

  10. ubuntu命令收集

    软件操作: - sudo apt-get install xxx 安装软件 - sudo apt-get --purge remove XXX 卸载软件 - sudo apt-get -f insta ...