TERASOLUNA (Spring) プロジェクト開発メモ
Spring MVCとTERASOLUNAについて分かったことをメモ。
Spring Framework 特徴
- 他のクラスへのアクセスはinterfaceを利用(DI)
自classのみで単体試験が可能 - AOPがある(スキーマ)
Spring構成
TERASOLUNA構成
%base-package%
はapplicationContextファイルに記述したパッケージ%model-name%
は統一しないと503エラーやDB操作に失敗します- META-INF配下を
eBuilder
で追加するとjuggling
でデプロイしたファイルを上書きします
新規プロジェクト作成手順
- ファイル>新規>その他
- eBuilder>Modlue Project>次へ
- プロジェクト名、グループIDを入力して、終了
- パッケージ・エクスプローラーから作成したプロジェクトを右クリック>プロパティ
- eBuilder>Module Assembly>Web アーカイブディレクトリを設定
Accel Platform Libraryが追加されます
src/main/resources
の下に/META-INF/spring/applicationContext-%SUFFIX%.xml
を作成
- この設定がないとSpringとして動作できません
- %SUFFIX%は任意
- 複数のルート(
context:component-scan:base-package
)がある場合は、applicationContextファイルを複数用意します
applicationContext-hello.xml
src/main/java
配下にパッケージを追加
- 追加したパッケージ配下にControllerクラスを作成します
src/main/webapp
の下に/WEB-INF/views
フォルダを追加し、JSPファイルを格納します
Form クラス
画面(JSP)とのデータ受け渡しを行います。
- Workflowの基本データを保持するFormクラスを作成します
→1つ作成すれば他のプロジェクトなどでも同じものを使用可 - 上記Formクラスを継承したユーザデータ保持用のFormクラスを作成します
- ユーザデータを格納するフィールドを用意します
- 合わせて、画面(JSP)でタグの名前も一致させると良いです
- 各フィールドの
getter/setter
を実装します
HelloControlForm.java
Controller クラス
画面表示時の処理を実装します。
- クラス定義に
@Controller
アノテーションを記述します - クラス定義に
@RequestMapping
アノテーションを記述します - 任意のメソッド定義に
@RequestMapping
アノテーションを記述します- メソッドのパラメータにModelクラスを追加します
- メソッドのパラメータにユーザデータ保持用のFormクラスを追加します
- メソッドの戻り値は表示するJSPへのパス
/WEB-INF/views
以降を指定します
HelloController.java
ユーザデータテーブルとのマッピング定義
Workflow時に使用します。
- applicationContextファイルに
mybatis:scan:base-package
を記述します
- ユーザデータテーブルの値を格納するEntityクラスを定義します
フィールド名は対応するカラムをスネークケースからCamelCaseにします
e.g.) user_data_id → userDataId
- データベースに対して実行するクエリを記述したマッピングファイルを作成します
クエリの戻り値やパラメータには上記Entityクラスを指定します /META-INF/mybatis/mybatis-config.xml
にEntityクラスのTypeAlias
を追加します
- マッピングファイルに指定したクエリを呼び出すためのリポジトリインタフェースを定義します
- Serviceクラスのフィールドにリポジトリインタフェースを追加し、
@Inject
アノテーションを追加することで、データベース操作が行えるようになります
Entityクラス
SampleTUser.java
マッピグファイル
SampleTUserRepository.xml
リポジトリインタフェース
SampleTUserRepository.java
Serviceクラス抜粋
JSP
hello.jsp
result.jsp
TERASOLUNA標準
Action処理を行う場合の実装手順です。
JSP
- Formのactionに遷移先のURLを記述します(一般的なHTMLでの記述と同じ)
- 実行はsubmitで行います
Form クラス
画面(JSP)とのデータ受け渡しを行います。
- クラス名は任意
- 対応する入力タグと同じ名前のフィールドを用意します
- 各フィールドの
getter/setter
を実装します
Controller クラス
- 画面とデータ受け渡しを行いたい場合、JSPで遷移先に指定されたURLにマッピングされたメソッドのパラメータに上記Formクラスを追加します
- Springの
@ModelAttribute
アノテーションは不要です - 直接URLを指定してページを開いた場合、Formインスタンスは存在しますが、プロパティが
null
となります
- Springの
- 画面に情報を渡したい場合、メソッドのパラメータにModelを追加します