この記事は公開されてから1年以上経過しているため、情報が古い可能性がございます。
ご注意ください。

このWordPress pluginを配布しています

Spring Frameworkで開発した、稼働実績があるプロジェクトの構成をご紹介いたします。

バージョンは以下の通りです。

  • Spring Framework 4.0.x
  • Maven 3

ディレクトリ構成

Coreモジュール

src/main/java
 |- Entity
 |   |- Helper and Extention
 |- Enums
 |- Exception
 |- Common Class
 |- Utility

Webモジュール

src/main/java
 |- Annotation
 |- Aspect
 |- Bean
 |   |- Request and Response Bean
 |   :
 |- Context
 |- Controller
 |- Exception
 |- Service
 |- Utility

※src/main/resourceは割愛

モジュール分割

それなりの規模になる場合は、モジュールを分割して1モジュールあたりを小さく維持するのがおすすめです。

今回coreとwebの2モジュールを用意し、webモジュールはcoreモジュールに依存する構成とします。

マルチモジュールとはいっても、通常のMavenプロジェクトを複数作成して依存性を定義する形です。

具体的に、coreモジュールをローカルやインハウスのMavenリポジトリにdeployしておき、webモジュールのpom.xmldependencyに、coreモジュールを追加します。

coreのpom.xml
<groupId>net.atuweb.example</groupId>
<artifactId>atuweb-example-core</artifactId>
<packaging>jar</packaging>
<version>develop-SNAPSHOT</version>

webのpom.xml

<dependencies>
    <dependency>
        <groupId>net.atuweb.example</groupId>
        <artifactId>atuweb-example-core</artifactId>
         <version>develop-SNAPSHOT</version>
    </dependency>
    :

Mavenではマルチモジュール・プロジェクトをサポートしており、複数モジュールを一発でcompileすることもできりるようですが、こちらとは異なり、やっていることはもっとシンプルですね。

core

こちらを基底とし、構造体や共通クラスなどを定義するモジュールとします。
具体的には、以下のクラスを配置します。

  • ORM
  • Dao
  • Dto
  • Enum

デプロイが煩雑になったりミスを誘発しますので、こちらにロジックは一切書かないようにするほうが幸せになれる感じです。

dependencies

主にDB関係のライブラリを定義します。

web

spring-webspring-webmvcを設定したメインモジュールです。
webアプリケーションの本体で、こちらにゴリゴリロジックやテストを書いていきます。

dependencies

Spring

  • spring-core
  • spring-context
  • spring-webmvc
  • spring-web
  • spring-test
  • spring-tx

その他

環境別の定義

環境によって相違があるMySQLやmemcachedなどのストレージアクセスはWebモジュールで定義します。

ファイル構成

src/main/resources
 |- common
 |    |- configuration-common.xml
 |    |- datasource-common.xml
 |    :
 |- local
 |    |- configuration.xml
 |    |- datasource.xml
 |    :
 |- development
 |    |- configuration.xml
 |    |- datasource.xml
 |    :
 :

pom.xml

pom.xmlでprofileごとに参照するディレクトリを指定します。

<profiles>
    <profile>
        <id>local</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>
            <resources>
                <resource>
                    <directory>src/main/resources/common</directory>
                </resource>
                <resource>
                    <directory>src/main/resources/local</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>
            :
        </build>
    </profile>
    :

mvn -P localとprofileを指定することで、定義したディレクトリ以下のファイルを固めて出力してくれます。

楽しい開発ライフを!
この記事はtomita@atuwebがお届けしました。

[Java]Spring Frameworkで1年開発したので主要なポイントをおさらいする



2016年07月26日:タイトルを『あるサービスのプロジェクト構成』から変更
2016年04月10日:”ファイル構成”内の記述ミスを修正

スポンサーリンク
ad_336
ad_336
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
コメントの入力は終了しました。