基于Spring的Web工程读取配置文件的工具

PropertiesUtils.java

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;

public class PropertiesUtils {
    
    private static Map<String, String> map = new HashMap<>();

    static {
        Properties props = ContextProvider.getBean("app", Properties.class);
        for (Entry item : props.entrySet()) {
            map.put((String) item.getKey(), (String) item.getValue());
        }
    }

    private PropertiesUtils() {
        throw new IllegalStateException("Utility class");
    }

    /***
     * 根据key获取字符串
     * @throws Exception
     */
    public static String getString(String key) {
        return map.get(key);
    }

    /**
     * 根据key获取Integer
     */
    public static Integer getInteger(String key) {
        String strTemp = getString(key);
        return Integer.parseInt(strTemp);
    }
}

ContextProvider.java

import java.util.Collections;
import java.util.Map;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Primary;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.stereotype.Component;

/**
 * 获取应用的 ApplicationContext 相关服务
 */
@Primary
@Lazy(false)
@Order(Ordered.HIGHEST_PRECEDENCE)
@Component
public class ContextProvider implements ApplicationContextAware {

    private static ApplicationContext context;

    @Override
    public void setApplicationContext(ApplicationContext arg0) throws BeansException {
        if (null == context) {
            context = arg0;
        }
    }

    /**
     * 获取系统 ApplicationContext 对象
     */
    public static ApplicationContext getApplicationContext() {
        return context;
    }

    /**
     * 获取 Bean 实例
     */
    public static <T> T getBean(Class<T> clazz) {
        return context.getBean(clazz);
    }

    /**
     * 获取 Bean 实例
     */
    public static <T> T getBean(String name, Class<T> clazz) {
        return context.getBean(name, clazz);
    }
}

applicationContext.xml

<?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:context="http://www.springframework.org/schema/context"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:util="http://www.springframework.org/schema/util"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xmlns:task="http://www.springframework.org/schema/task"
   xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-4.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
        http://www.springframework.org/schema/task
        http://www.springframework.org/schema/task/spring-task-4.0.xsd"
   default-lazy-init="true">

   <!-- 加载配置文件 -->
   <util:properties id="app" location="classpath:application.properties"/>

   <!-- Activates annotation-based bean configuration -->
   <context:annotation-config />

   <!-- 对包中的类进行扫描,以完成 非Web 相关的 Bean 创建和自动注入 -->
   <context:component-scan base-package="com.biian"/>

   <aop:aspectj-autoproxy />
</beans>

application.properties

# 系统所在环境
system.env=TEST

#pdf文件最大大小,单位:M
pdf.file.max.size=2

  这样,我们就可以直接用PropertiesUtils.getString("system.env");获得配置文件中的配置值。

posted on 2018-08-11 20:14  bijian1013  阅读(186)  评论(0)    收藏  举报

导航