项目的全局配置(spring 读取properties配置文件)

今天在做项目的时候,用到了项目的全局配置文件config.properties。在此记录下用spring的这种读取properties文件的方式,方便以后查阅。

1.修改属性文件confog.properties
#path of upload
pfo.fileupload.server.path=/aaa/bbb

(1)【.properties】文件的内容都是键值对的形式,在项目中可以存放比如数据库连接信息这样的经常会修改的值,做成配置文件的话可以,在配置改变时,只修改文件避免修改源代码
(2)上面的配置是项目读取文件的路径。比如我的域名是aaa,文件路径就是aaa/file/filepath

2.修改spring的配置文件

<beans>标签下添加一个bean,代码如下

<!-- 配置文件config.properties -->
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="location" value="classpath:config.properties" />
</bean>

(1)【classpath:】此配置表示告诉web容器去classpath(WEB-INF/classes和WEB-INF/lib)中去加载指定名称的配置文件。摘抄自:classpath和classpath*的区别
(2)配置中定义id为configProperties,id在后文会用到。

3.修改读取全局配置文件的类OperatParam(如果没有可以新建)

我的项目中用的是基于注解的方式,所以这个类要求spring注解扫描扫描设置的包下。

<!-- 注解扫描包 -->
<context:component-scan base-package="xxx.yyy" />

OperatParam的代码

/**
 * 
* @ClassName: OperatParam
* @Description:获取属性文件key value[config.properties]
 */
@Component
public class OperatParam {
    private Map<String, String> configMap;

    @Resource
    private Properties configProperties;//通过在spring配置bean,读取config.properties文件

    @PostConstruct
    private void init() {
        this.configMap = new HashMap<String, String>();
        Set<?> keys = this.configProperties.keySet();
        for (Iterator<?> localIterator = keys.iterator(); localIterator.hasNext();) {
            Object key = localIterator.next();
            this.configMap.put(key.toString(), this.configProperties.getProperty(key.toString()));
        }
    }
    public String get(String key) {
        return (String) this.configMap.get(key);
    }
}

【@Component】:把普通的类注入到spring容器中,可以和@Controller, @Service, @repository进行区分;
【@Resource】:根据名称实现依赖注入,这里的configProperties属性就是第一点中配置的id;
【@PostConstruct】:在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法;
【init()】:调用该方法读取配置文件的内容存在map中;
【get(String key)】在项目中调用该方法获取特定的属性值。

4.使用案例

文件上传时,设置上传路径。代码如下:

【FileUpload.java】
@Resource
private OperatParam operatParam;//依赖注入一个OperatParam对象

if(isLocal) {
     dir = System.getProperty("webapp.root")+"upload";
} else {
    //dir = "/aaa/bbb";
    dir = operatParam.get("pfo.fileupload.server.path");//调用get(String key)读取属性文件
}

以上就是在我的项目中使用的方式,如果有不正确的地方或者可以优化的地方欢迎指正!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值