1. 程式人生 > >Maven專案中讀取src/main/resources目錄下的配置檔案

Maven專案中讀取src/main/resources目錄下的配置檔案

在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>
<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).中一樣,這裡就不重複了