Webプログラミングきっかけは、Q&Aの対応と、下記の記事です。@IThttp://www.atmarkit.co.jp/ait/articles/1507/02/news012.htmlStruts(1,2)もSpringもMyBatisも良く知らなかったので、今更Struts2?とも思うのですが、基礎知識として、手始めにStruts2+Spring+MyBatisの環境を構築してみることにしました。Bootとかにしたほうが良いと思います。今回のは、どうしてもこの構成を使いたい人(主に自分)に向けたものです。Spring4とMyBatis3なのは、Struts2を使う際にSpringとMyBatisの構成を採用される方が多いように見受けられたからです。それぞれの最新バージョンを選択した結果、Struts2+Spring4+MyBatis3になりました。実際は、かなりの試行錯誤を重ねてここまでたどりついています。ここまでの設定くらいはカンタンにできるようになっててくれると利用者も増えるのではと思うのですが、もはや古くてマイナーな構成だから仕方ないんですかね。Struts2のベースはArchetypesのstruts2-conventionを使おうと思ったのですが、余計な部分が多いような気がして、やめました。結局、maven-archetype-webappをベースにして作ることにしました。できるだけXMLを書かなくて済むように、アノテーションで設定できるものを選択しています。...と言いながらもSpringの設定はXMLで書いてしまっていますが、AppContext構成クラスを作っていけばXMLレスも可能のようです。それぞれの新しいバージョンでは、アノテーションを使ってXMLレスに書けるものが多くなっている印象です。全部を一気にかくと、どこまでがStruts2でどこまでがSpringでなのかが分かりにくいと思うので、ひとつずつ区切って書いています。完成版(+α)がGitHubに登録してあります。記事が不要な方、文章を読むのが面倒な方は直接ソースコードを見てください。基本的に現時点で最新のライブラリーを使うようにしています。JavaEEでも問題ないと思います。最初の投稿のバージョンでは、Java8の新機能は動作しません。試すの忘れていました。Pluginというのを導入する必要があります(asmの除外も必要)。詳細は、後述の「Struts2の設定」を参照して下さい。下記の設定でMavenプロジェクトを作成します。この方法だとソースフォルダーで使用するフォルダーがなぜか作成されないので、プロジェクトが作成された後に手動で作成します。myapp次に、フレームワークに直接関係ないライブラリーなどの設定を行います。後で使うので、事前に設定しておきます。compiler-pluginJava8にするために、compilerプラグインを設定します。</build>プロパティーの設定バージョンなどのプロパティーを設定します。</properties>dependencyManagementの設定(Spring)これが無いと上手く動かなかったので。下記の記事を参考にしました。最低限のサーブレット設定を追加します。</dependency>JDBCドライバーとDB設定H2でDBアクセスをするので、その準備をします。JDBCドライバーのライブラリーを追加します。</dependency>あとはDB接続確認のためにテーブルを作っておきます。接続設定はapplicationContext.xmlのところで書きますが、url="jdbc:h2:file:~/start-struts2-spring4-mybatis3;MODE=PostgreSQL;AUTO_SERVER=TRUE"username="sa"password="sa"です。この設定を使用した場合、ホームディレクトリーの直下にファイルstart-struts2-spring4-mybatis3.*.dbが作成されます。DBに下記のテーブルを作成してください。以降のサンプルコードはデータが無くても動作しますので、必要があれば適当に用意してください。h2.jar)すると、ブラウザーベースのコンソール画面が使えます。データベース操作ツールを用意していない方は、このコンソールを利用されると便利です。Struts2の設定まずはStruts2の基本ライブラリーを追加します。アノテーションで設定ができるようにするために、convention-pluginを追加しています。Pluginが必要です。struts2-java8-support-pluginを追加します。coreライブラリーなどが依存しているasmライブラリーは、struts2-java8-support-pluginが参照しているバージョンを使う必要があるので、それ以外のライブラリーではexclusionsでasmを除外する必要があります。今回の例では、struts2-coreに除外設定を入れています。他のasmを参照するライブラリーを使う場合は注意してください。classという例外が出てActionクラスのロードに失敗します。</dependency>struts.xmlをクラスパスに追加します。内容の詳細はここでは触れません。(というかよく分かってません。)必要な方は個別に調べてみてください。/></struts>web.xmlを追加します。</welcome-file-list></web-app>Actionを追加します。デフォルトでは、actionsで終わるパッケージに置く必要があるみたいです。Actionのメソッドは、引数なしの戻り値Stringである必要があります。結果画面のJSPも合わせて追加します。/></h2></body></html>ここまでのsrc以下のファイル構成は以下のようになっています。hello.jspこれでStruts2の最低限の設定が完了しました。Eclipseからサーバーで実行などでTomcatを起動して、http://localhost:8080/myapp/helloにアクセスすれば、動作を確認できます。続いて、Springの設定を追加していきます。struts2-springプラグインと、Spring4の各種ライブラリーを追加します。Spring4は、dependencyManagementを設定しているので、個々のバージョン指定は不要です。</dependency>次に、設定ファイルapplicationContext.xmlを追加します。冒頭に書いた通り、Javaコードで設定を構成することも可能のようですが、今回はXMLで書いています。Javaで書く方式についてはまた後日調べたら書くかも知れません。JdbcTemplateは動作確認でを使っているのでbean設定を追加していますが、使わなければこの設定は不要だと思います。いちいちbean設定を書かなくて済むように、component-scanを設定しています。/></beans>Webアプリ起動時にSpringコンテキストを有効にするために、web.xmlに設定を追加します。</listener>インジェクションするリソースは、サービスとコンポーネントの2通り用意しました。これだけだとあまり差はありませんが、まだ細かいところが分かっていないので、@Serviceと@Componentの違いくらいです。}}これらのリソースをDIで利用するActionを書きます。/></p></body></html>ここまでのsrc以下のファイル構成は以下のようになっています。welcome.jspこれでSpring4の追加設定が完了しました。Eclipseからサーバーで実行などでTomcatを起動して、http://localhost:8080/myapp/welcomeにアクセスすれば、動作を確認できます。最後に、MyBatisの設定を追加していきます。MyBatisとmybatis-springプラグインのライブラリーを追加します。</dependency>Springの設定にMyBatisの連携設定を追加します。Springと同様に、mapperを自動スキャンする設定も追加します。XMLスキーマ宣言の追加が必要なので注意してください。/></beans>MyBatisの設定ファイルconfiguration.xmlを追加します。今回は特に設定することは無いので、内容は空です。/>モデルとマッパーを追加します。通常、モデルとマッパーのパッケージは分けたほうが良いと思いますが、ここでは簡略化のために同じパッケージに入れています。マッパーは、XMLを使わずアノテーションで定義しています。getAllUsers();}UserMapperをDIで利用するActionを追加します。/></p></body></html>ここまでのsrc以下のファイル構成は以下のようになっています。welcome.jspこれでMyBatis3の追加設定が完了しました。Eclipseからサーバーで実行などでTomcatを起動して、http://localhost:8080/myapp/usersにアクセスすれば、動作を確認できます。おわりに最終的には至極シンプルな構成に見えますが、イチから始めるとちょっとツラいですね。足がかりにはなる程度のものは用意できたと思います。はじめにも書きましたが、完成版(+α)をGitHubに登録してあります。良かったら見てみてください。したら、後でGitHubの方だけ修正するかもしれません。ロジカルにアナログで。Centralに公開したのでメモ。使いたい人のためのメモすぐに使いたかったのは私です。(2)プロフィールid:argiusはてなブログをはじめよう!argiusさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。