Spring Framework XML設定ファイルのフォーマット

Bean定義、AOP設定、セキュリティ設定、コンテキスト設定を含むSpring Framework XML設定ファイルをフォーマットします。Spring XMLのベストプラクティスを解説します。

Configuration

詳細な説明

Spring XML設定のフォーマット

Spring Frameworkは歴史的にBean定義とアプリケーション設定にXMLを使用してきました。Javaアノテーションがデフォルトになりましたが、多くのエンタープライズプロジェクトは依然として広範なSpring XML設定を維持しています。

Bean定義

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
         http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context.xsd">

  <context:component-scan base-package="com.example" />

  <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
        destroy-method="close">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/mydb" />
    <property name="username" value="root" />
    <property name="password" value="secret" />
  </bean>
</beans>

スキーマロケーションのフォーマット

Spring XMLファイルは多くの名前空間-スキーママッピングをリストする長い xsi:schemaLocation 値を持つことがよくあります。適切なフォーマットにより、各名前空間/URLペアが独自の行に配置され読みやすくなります。

コンストラクタインジェクションとプロパティインジェクション

<!-- コンストラクタインジェクション -->
<bean id="userService" class="com.example.UserService">
  <constructor-arg ref="userRepository" />
  <constructor-arg value="100" />
</bean>

<!-- プロパティインジェクション -->
<bean id="mailService" class="com.example.MailService">
  <property name="host" value="smtp.example.com" />
  <property name="port" value="587" />
  <property name="templateEngine" ref="templateEngine" />
</bean>

Spring Security XML

<http auto-config="true">
  <intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
  <intercept-url pattern="/user/**" access="ROLE_USER" />
  <form-login login-page="/login" />
  <logout logout-url="/logout" />
</http>

セキュリティ設定はフォーマットの恩恵が大きく、URLパターンとアクセスルールが視覚的なセキュリティマトリクスを形成します。

複数の設定ファイル

大規模なSpringプロジェクトは設定を複数のXMLファイルに分割します。各ファイルは独自の名前空間宣言を持ち、明確で焦点の絞られた目的(データアクセス、セキュリティ、メッセージングなど)を持つべきです。

インポートチェーン

<import resource="classpath:spring-data.xml" />
<import resource="classpath:spring-security.xml" />
<import resource="classpath:spring-messaging.xml" />

ファイルの先頭にフォーマットされたimportにより、設定の依存関係チェーンが明確に表示されます。

ユースケース

Spring XMLフォーマットは、レガシーSpringアプリケーションを維持するエンタープライズJavaチーム、XMLからアノテーションベースの設定への移行(既存XMLの読解と理解)、Beanワイヤリングと依存性注入チェーンのレビュー、Springコンテキスト初期化エラーのデバッグに不可欠です。

試してみる — XML Formatter

フルツールを開く