欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Maven项目中读取src/main/resources目录下的配置文件的方法

程序员文章站 2024-02-24 10:15:40
在maven项目的开发中,当需要读取src/下的配置文件时,该怎么做? 我们假设resources下有一个文件名为kafka.properties的配置文件(为什么用...

在maven项目的开发中,当需要读取src/下的配置文件时,该怎么做?

我们假设resources下有一个文件名为kafka.properties的配置文件(为什么用kafka.properties,因为这是在做kafka项目的时候碰到的问题,在网上查到了不少信息,索性当个搬运工,再根据自己的理解整理一下)

1.在java类中读取

若配置文件不在src/main/resources目录下,可以直接使用

properties prop = new properties(); 
prop.load(new inputstream("kafka.properties")); 

当配置文件放在src/main/resources的目录下时,只能使用class.getresourceasstream()方法来加载

properties prop = new properties(); 
prop.load(this.getclass().getresourceasstream("/kafka.properties")); 

此时,getresourceasstream(string name)方法中参数路径的写法:

1).若写成"kafka.properties",则是去当前类的class文件同一目录下找(但是显然在正常项目不会有人将配置文件放在这种位置)。

2).若写成"/kafka.properties",则是去整个项目的classes目录下去找,即target/classes

2.在spring框架的xml文件中读取

首先我们先随便写个配置文件kafka.properties

kafka.topic=topic 
serializer.class=kafka.serializer.stringencoder 
key.serializer.class=kafka.serializer.stringencoder 

以下就有两种方法来调用

1).首先可以在spring的bean中配置

<bean id="propertyconfigurer" class="org.springframework.beans.factory.config.propertyplaceholderconfigurer"> 
<property name="locations"> 
<list> 
<span style="white-space:pre"> </span><value>/kafka.properties</value> 
</list> 
</property> 
</bean> 

这里还可以在list标签中配置多个value,这样就可以在bean中读取一个甚至多个配置文件。

<bean id="kafkaservice" class="com.wws.service.impl.kafkaserviceimpl"> 
  <!-- <property name="topic"><value>topic</value></property> --> 
  <property name="topic"><value>${kafka.topic}</value></property> 
</bean> 

这样就可以在后面的bean中成功调用配置文件中的参数,以上被注释的那段property和被注释掉的那行是同样效果

2).或者也可以使用如下方法

<context:property-placeholder location="classpath:kafka.properties"/> 

直接在spring配置文件中配置context:property-placeholder,有多个配置文件可以用逗号隔开,例如

<context:property-placeholder location="classpath:kafka.properties,classpath:jdbc.properties"/> 

 调用的方法跟1).中一样,这里就不重复了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。