maven工程讀取resource下配置文件


maven工程讀取resource下配置文件

在maven工程中,我們會將配置文件放到,src/main/resources   下面,例如

我們需要確認resource 下的文件 編譯之后存放的位置

 

它編譯的路徑直接位於classes下面,這個路徑其實就是classPath的路徑,所以,在resources 根目錄下的配置文件其實就是 classPath的路徑

 

1 public static void main(String[] args) throws ParserConfigurationException, Exception{
2         ClassLoader classLoader = TestDom.class.getClassLoader();
3         URL resource = classLoader.getResource("test.xml");
4         String path = resource.getPath();
5         System.out.println(path);
6         InputStream resourceAsStream = classLoader.getResourceAsStream("test.xml");

這樣我們就可以直接拿到路徑,調用 getResourceAsStream 方法 可以直接拿到目標文件的輸入流

 


在Maven項目的開發中,當需要讀取src/下的配置文件時,該怎么做?

我們假設Resources下有一個文件名為kafka.properties的配置文件(為什么用kafka.properties,因為這是在做kafka項目的時候碰到的問題,在網上查到了不少信息,索性當個搬運工,再根據自己的理解整理一下)

1.在java類中讀取
若配置文件不在src/main/resources目錄下,可以直接使用

 

[java]  view plain  copy
 
  1. Properties prop = new properties();  
  2. prop.load(new InputStream("kafka.properties"));  

當配置文件放在src/main/resources的目錄下時,只能使用Class.getResourceAsStream()方法來加載

 

 

[java]  view plain  copy
 
  1. Properties prop = new properties();  
  2. 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

 

[plain]  view plain  copy
 
  1. kafka.topic=topic  
  2. serializer.class=kafka.serializer.StringEncoder  
  3. key.serializer.class=kafka.serializer.StringEncoder  

以下就有兩種方法來調用

 

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

 

[html]  view plain  copy
 
  1. <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  2. <property name="locations">  
  3. <list>  
  4. <span style="white-space:pre;"</span><value>/kafka.properties</value>  
  5. </list>  
  6. </property>  
  7. </bean>  

這里還可以在list標簽中配置多個value,這樣就可以在bean中讀取一個甚至多個配置文件。

 

[html]  view plain  copy
 
  1. <bean id="kafkaService" class="com.wws.service.impl.KafkaServiceImpl">  
  2.     <!-- <property name="topic"><value>topic</value></property> -->  
  3.     <property name="topic"><value>${kafka.topic}</value></property>  
  4. </bean>  

這樣就可以在后面的bean中成功調用配置文件中的參數,以上被注釋的那段property和被注釋掉的那行是同樣效果
2).或者也可以使用如下方法

 

[html]  view plain  copy
 
  1. <context:property-placeholder location="classpath:kafka.properties"/>  

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

 

[html]  view plain  copy
 
  1. <context:property-placeholder location="classpath:kafka.properties,classpath:jdbc.properties"/>  

調用的方法跟1).中一樣,這里就不重復了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM