Sky

sky ray clouds park inokashira
by Blue Lotus

開発ブログ

JAXB で構造化データを表現する

はてなブックマーク del.icio.usブックマーク JAXB で構造化データを表現するをYahoo!ブックマークに追加

Java6 から JAXB が標準で含まれるようになりました。

構造を持ったデータを表現できるので、プロパティファイルでは不足していてデータベースでは大袈裟な領域で活躍しそうです。たとえば設定ファイルには適しているのではないでしょうか。

JAXB を使えばこんな感じの設定ファイルにアクセスするためのクラスが簡単に作れます。

<config version="1.0">
  <server host="myhost" port="7001"/>
  <field-def-list>
    <field-def>
      ...
    </field-def>
  </field-def-list>
</config>

JAXB は高機能ですがこういった用途であれば以下のアノテーションだけ覚えておけば十分でしょう。

@XmlRootElement
@XmlType
@XmlElement
@XmlElementWrapper
@XmlAttribute

上述の config XML は下記のように定義できます。

@XmlRootElement(name = "config")
@XmlType
public class Configuration {

    @XmlAttribute(name = "version")
    public String version;

    @XmlElement(name = "server")
    public Server server;

    @XmlElementWrapper(name = "field-def-list")
    @XmlElement(name = "field-def")
    public List fieldDefList;

}

内部で使う設定ファイルですから全部 public でいいと思います。気になる場合は必要な設定へのアクセサを持ったインタフェースを経由させるようにすれば使用される設定項目が明確になります。

public interface ServerConfig {

    String hostName getHostName();
    int portNumber getPortNumber();
}

こういうのの実装クラスを、必要なクラスにインジェクトします。

@Inject
private ServerConfig serverConfig;

ちょっと脱線しましたが JAXB は手軽にちょっとした構造化データを扱うことができ便利です。少しのアノテーションを覚えれば使えるので試されてはいかがでしょうか。

- Andy


.

トラックバック

このエントリーのトラックバックURL:
http://www.sbirobo.com/mt/mt-tb.cgi/571

コメントを投稿

銘柄検索  松本徹三  SBI Business  ソーシャルグラフ  ビジネスSNS