Spring 读取classpath下的文件存到map里面

Spring配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:aop="http://www.springframework.org/schema/aop"
     xmlns:tx="http://www.springframework.org/schema/tx"
     xmlns:util="http://www.springframework.org/schema/util"
     xsi:schemaLocation="
   http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
   http://www.springframework.org/schema/tx
   http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
   http://www.springframework.org/schema/aop
   http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
   http://www.springframework.org/schema/util
   http://www.springframework.org/schema/util/spring-util-2.5.xsd">

    <description>应用组件</description>

    <!-- Configurer that replaces ${...} placeholders with values from a properties file -->
    <bean id="propertyConfigurer" class="com.jiewen.commons.toolkit.config.XmlExtPropertyPlaceholderConfigurer">
        <property name="extLocation" value="classpath:config.xml"/>
    </bean>

    <bean id="loadKeyFromProperties" class="com.test.init.LoadKeyFormProperties">
        <property name="keyFileResource">
            <value>classpath:keys.properties</value>
        </property>
    </bean>  

    <!-- DataSource -->
    <bean id="dataSource" class="com.jiewen.commons.toolkit.db.BasicDataSource" destroy-method="close">
    <property name="driverClassName"><value>${config.jdbc.driver}</value></property>
    <property name="url"><value>${config.jdbc.url}</value></property>
    <property name="username"><value>${config.jdbc.username}</value></property>
    <property name="password"><value>${config.jdbc.password}</value></property>
    <property name="initialSize"><value>5</value></property>
    <property name="maxActive"><value>100</value></property>
    <property name="maxWait"><value>10000</value></property>
    <property name="minIdle"><value>5</value></property>
    <property name="validationQuery"><value>select 1 from dual</value></property>
    </bean>


</beans>

classpath下共有两个文件一个是数据库配置,一个是参数配置这里主要说参数配置文件里面的参数的获取:

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.io.Resource;

import com.jiewen.commons.util.IOUtil;

/**
 * 初始化加载密钥文件
 *
 * @author P.M
 *
 */
public class LoadKeyFormProperties implements InitializingBean {

    private Resource keyFileResource;

    private static Map<String, String> map = new HashMap<String, String>();

    protected static volatile boolean initialized = false;

    public static Map<String, String> getKey() {
        return map;
    }

    public void setKeyFileResource(Resource keyFileResource) {
        this.keyFileResource = keyFileResource;
    }

    /**
     * 将文件读取到map里面
     */
    private void loadKeyFormProperties() {
        if (initialized) {
            return;
        }
        InputStream is = null;
        try {
            is = keyFileResource.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String str = null;
            while ((str = br.readLine()) != null) {
                String[] data = str.split("=");
                map.put(data[0], data[1]);
            }
            initialized = true;
        } catch (Exception e) {

        } finally {
            IOUtil.closeQuietly(is);
        }

    }

    @Override
    public void afterPropertiesSet() throws Exception {
        loadKeyFormProperties();
    }

}
时间: 2024-10-12 15:48:17

Spring 读取classpath下的文件存到map里面的相关文章

读取ClassPath下resource文件的正确姿势

1.前言 为什么要写这篇文章?身为Java程序员你有没有过每次需要读取 ClassPath 下的资源文件的时候,都要去百度一下,然后看到下面的这种答案: Thread.currentThread().getContextClassLoader().getResource("ss.properties").getPath(); 亦或是: Object.class.getResourceAsStream("ss.properties"): 你复制粘贴一下然后放到自己的项

【转】SpringBoot——web项目下读取classpath下的文件心得

在读取springBoot+gradle构建的项目时,如果使用传统的FileInputStream读取文件流或者ResourceUtils工具类的方式,都会失败,下面解释原因: 一.读取文件的三种方式: 1. ResourceUtils工具类 import org.springframework.util.ResourceUtils; //使用: File file= ResourceUtils.getFile("classpath:test.txt"); 2. FileInputSt

spring读取classpath目录下的配置文件通过表达式去注入属性值.txt

spring读取配置文件: 1. spring加载配置文件: <context:property-placeholder location="classpath:config/system.properties"/> 2. 配置文件内容: YTZ_SPECIAL_USER_PHONE=13912622596,18721293900,18656253360 YTZ_SPECIAL_USER_PHONE2=13912622596,18721293900,18656253360

Maven组织的web项目读取WEB-INF下properties文件

开发时经常要读取properties文件的配置信息,但是properties文件所在的位置和properties访问方式不同读取方式也不同 1.访问方式一般分:java项目和web项目. 2.文件位置:与源文件相同目录和与源目录不相同 java项目与源文件相同目录读取properties文件方法,在main函数中读取 import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOExc

php读取目录下的文件

工作需要写了一个读取指定目录下的文件,并显示列表,点击之后读取文件中的内容 高手拍砖,目录可以自由指定,我这里直接写的是获取当前文件目录下面的所有文件 </pre> <?php /** * 读取指定目录下面的文件内容 * @author Administrator * */ class Catlog { /** * 要读取的目录 * @var string */ private $dir; /** * 文件名中必须存在 * @var string */ private $str = 'p

android 读取根目录下的文件或文件夹

1 @Override 2 public void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.main); 5 EditText keywordText = (EditText)this.findViewById(R.id.keyword); 6 Button button = (Button)this.findViewById(R.i

利用perl读取目录下的文件列表

v1.0 #读取当前目录下的文件名列表 use strict; opendir TMP, "./" || die "cannot open dir"; open RES, ">./file_list.txt" || die "Cannot open and write"; foreach (readdir TMP){ if(/.+\.pdf/){ print RES "$_\n"; } } 原文地址:

Spring将classpath下的 .properties文件数据读出放到map中,在初始化时加载

因为项目需要需要将配置文件中的键值对读出放到map中 格式为: 001=123456789 Appcontext.xml中添加配置: <bean id="loadKeyFromProperties" class="com.:landau.init.LoadKeyFormProperties"> <property name="keyFileResource"> <value>classpath:keys.pro

通过Spring工具类获取classpath下的文件资源,解析xml

File cfgFile = ResourceUtils.getFile("classpath:test.txt"); 或者 org.springframework.core.io.Resource fileRource = new ClassPathResource("test.xml"); 获取文件:fileRource.getFile(); 获取文件流:fileRource.getInputStream(); 获取到xml:进行解析:例:<myXml&g