2016-11-02 4 views
0

比較的シンプルな設定ファイルをMEL経由でグローバルにアクセスできる変数にロードしようとしています。私は構造がフラットではないので、典型的なプロパティフィールドを使用したくありません。Mulesoft - JSONまたはXMLのプロパティファイルをグローバル変数にロード

ファイルをBeanとして次のようにロードするといくらか近くになることができましたが、これはハッシュマップではなく巨大な文字列を残しました(私はなぜそれを修正するのか分かりませんでした):

<spring:bean id="ClientConfiguration" name="ClientConfiguration" class="java.lang.String" scope="singleton"> 
     <spring:constructor-arg> 
      <spring:bean id="Test" name="org.springframework.util.FileCopyUtils" class="org.springframework.util.FileCopyUtils" factory-method="copyToByteArray"> 
       <spring:constructor-arg type="java.io.InputStream" value="classpath:client-configuration.json"/> 
      </spring:bean> 
     </spring:constructor-arg> 
    </spring:bean> 

これを行うには適切かどうかを検討してください。

+0

外部ファイルからのコンテキストでハッシュマップを使用したいのですか? –

+0

はい、本質的です。 –

答えて

2

ここに解決策があります。

クラスファイル:

package com.example; 

import java.io.File; 
import java.util.HashMap; 
import java.util.Map; 

import org.codehaus.jackson.map.ObjectMapper; 
import org.codehaus.jackson.type.TypeReference; 


public class JSONUtil { 

    File in; 
    public File getIn() { 
     return in; 
    } 
    public void setIn(File in) { 
     this.in = in; 
    } 

    public Map<String, Object> getConfigAsMap(){   
     try{ 
      ObjectMapper mapper = new ObjectMapper(); 
      TypeReference<HashMap<String,Object>> typeRef = new TypeReference<HashMap<String,Object>>() {}; 

      Map<String, Object> map = mapper.readValue(in, typeRef); 
      System.out.println(map); 
      return map; 
     } catch(Exception exception){ 
      exception.printStackTrace(); 
      return null; 
     } 
    } 
} 

Configが:

​​

これが働いているとJSON Configが地図としてロードされます。

関連する問題