springboot读取自定义properties并注入到bean中

在使用springboot项目时,可使用@value的方式直接读取application.properties中的文件,但有时我们需要配置自定义的properties,下面方法将在springboot启动时利用fileinputstream读取properties文件中的内容,并注入到bean中,@Configuration注解会在springboot启动时执行一次,代码如下:

package com.shanqis.parking.properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/**
 * 读取resource下的.properties文件,将文件中的内容封装到map中,注入到bean中方便依赖注入
 *
 * @author Administrator
 */
@Configuration
public class PropertiesClassLoader {

    private Logger logger = LoggerFactory.getLogger(PropertiesClassLoader.class);

    private Map<String, Object> versionProperties = new HashMap<>(16);

    private void init(String name) {

        try {
            Properties properties = new Properties();

            InputStream in = PropertiesClassLoader.class.getClassLoader().getResourceAsStream(name + ".properties");

            properties.load(in);

            logger.info("加载{}.properties参数", name);

            for (String keyName : properties.stringPropertyNames()) {
                String value = properties.getProperty(keyName);

                if ("version".equals(name)) {
                    versionProperties.put(keyName, value);
                }

                logger.info("{}.properties---------key:{},value:{}", name, keyName, value);
            }
            logger.info("{}.properties参数加载完毕", name);
        } catch (IOException ignored) {

        }

    }

    @Bean(name = "versionProperties")
    public Map<String, Object> commonMap() {
        init("version");
        return versionProperties;
    }
}

springboot启动日志如下:

然后在controller层或者service层等可以这样使用

/**
	 * 读取common.properties文件
	 */
	@Autowired @Qualifier("commonMap")
	protected Map<String, String> commonMap;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值