将参数配置在配置文件中,避免反复修改代码

标签: 文件配置
14人阅读 评论(0) 收藏 举报
分类:
package com.nuoya.zzx.util;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

public class ConfigUtil {
    private static Properties props = new Properties();

    public ConfigUtil() {
    }

    public static String getValue(String key) {
        return props.getProperty(key);
    }

    public static void updateProperties(String key, String value) {
        props.setProperty(key, value);
    }

    static {
        try {
            props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties"));
        } catch (FileNotFoundException var1) {
            var1.printStackTrace();
        } catch (IOException var2) {
            var2.printStackTrace();
        }

    }
}

引入配置文件

<bean id="configProperties"  
        class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="ignoreResourceNotFound" value="true" /> 
        <property name="locations">  
        <array>  
            <value>classpath:jdbc.properties</value>  
            <value>classpath:redis.properties</value>  
            <value>classpath:log4j.properties</value>  
            <value>classpath:config.properties</value>  
        </array>  
    	</property>
        <property name="propertiesPersister">
            <bean class="com.nuoya.zzx.plugins.Aes256.AES256PropertiesPersister" />
        </property>
    </bean> 
    

config.properties

key=字符串

在程序中使用

key = ConfigUtil.getValue("key");
使用以上工具可调用配置文件中的配置信息在程序中使用,不必反复修改java代码


或者使用

 @Value("#{configProperties['key']}")
    private String key;
亦可以达到同样的目的


过程中遇到取值为null的情况

在spring mvc架构中,如果希望在程序中直接使用properties中定义的配置值,通常使用一下方式来获取:

    @Value("${tag}")
    private String tagValue;

但是取值时,有时这个tagvalue为NULL,可能原因有:

  • 使用static或final修饰了tagValue,如下:
    private static String tagValue;  //错误
    private final String tagValue;    //错误
  • 类没有加上@Component(或者@service等)
    @Component   //遗漏
    class TestValue{
         @Value("${tag}")
         private String tagValue;
    }
  • 类被new新建了实例,而没有使用@Autowired
    @Component   
    class TestValue{
         @Value("${tag}")
         private String tagValue;
    }

    class Test{
        ...
        TestValue testValue = new TestValue()
    }

这个testValue中肯定是取不到值的,必须使用@Autowired:

class Test{
        @AutoWired
        TestValue testValue
    }

查看评论

JDBC优化之手写数据库连接池技术

-
  • 1970年01月01日 08:00

Android开发中处理图片OOM的若干方法小结

http://blog.csdn.net/liliang497/article/details/7221110# 最近开发电视版的云存储应用,要求”我的相册“模块有全屏预览图片的功能,全屏分...
  • simayilong
  • simayilong
  • 2012-07-20 10:40:00
  • 2829

Tomcat配置c3p0数据源

使用C3P0配置JNDI数据源 Tomcat6.x中配置JNDI数据源时默认使用的是Tomcat6.x自带的DBCP连接池,Tomcat6.x使用DBCP连接池配置JNDI数据源如下:     ...
  • qq_20545159
  • qq_20545159
  • 2015-05-11 21:12:01
  • 818

hadoop参数汇总配置文件参数详解

Hadoop参数汇总 @(hadoop)[配置] linux参数 以下参数最好优化一下: 文件描述符ulimit -n用户最大进程 nproc (hbase需要 hbse bo...
  • weijie0917
  • weijie0917
  • 2016-09-22 11:08:03
  • 2197

Apache配置文件httpd.conf参数注解

基于Apache-2.4.18版本配置文件httpd.conf进行说明。
  • ljl890705
  • ljl890705
  • 2016-04-11 18:23:40
  • 1580

Spring进阶之路(8)-java代码与配置文件中配置

实际开发中并不会需要你将代码转为配置文件的形式去呈现,但是,我写着一系列博文的目的并不是教你如何去项目中进行开发,因为包括之前的几篇博文中你会发现并不是在讲项目的实践的,我的想法是这样的:为一些对Sp...
  • wangyang1354
  • wangyang1354
  • 2016-03-11 21:54:32
  • 3481

Redis配置文件参数详解

Redis是非常好的Key-Value数据库,Redis数据都是缓存在内存中,性能非常的好。下面主要讲解下redis配置文件参数和说明。1. Redis默认不是以守护进程的方式运行,可以通过该配置项修...
  • u012558554
  • u012558554
  • 2016-04-06 10:05:33
  • 495

在Django中怎样避免反复书写代码

在常见的简单的html中,我们经常见到这一个分类和下一个的分类网页结构大体相同,这就和python中类的继承的性质,子类可以继承父类的功能和函数,并可以实现重写的功能,这样就大大减少了我们的代码的负担...
  • LH_python
  • LH_python
  • 2018-04-23 21:05:41
  • 2

CW中文8.9寸LCD

  • 2018年03月25日 08:49
  • 4.93MB
  • 下载

ros动态参数配置的问题

1首先引用前辈的博客 http://blog.csdn.net/yaked/article/details/44924485 这篇文章介绍的步骤完全可以配置好 但是有一点一定要注意那就是包名和节...
  • baidu_35557785
  • baidu_35557785
  • 2016-11-21 10:02:08
  • 1151
    个人资料
    等级:
    访问量: 347
    积分: 106
    排名: 142万+
    文章存档
    最新评论