2015年3月12日木曜日

Eclipse + STS で Spring Framework の WebAPI を作成してみた

概要

前回はMaven + Springで簡単なWebアプリを作成しました
今回もMaven + Springではあるのですが前回は「spring-boot-starter-web」という仕組みを使っていて、これはjarを生成するだけでWebアプリが作成できるという仕組みです
「spring-boot-starter-web」では一般的なJavaのWebアプリの構造にはなっておらず、Webサーバ(TomcatやJBOSSなど)上で動作させようとするとちょっと面倒です

今回はWebサーバ上で動作するSpringアプリをSTS(Spring Tool Suite)というツールを使ってやってみました

環境

  • Mac OS X 10.10.2
  • Eclipse Luna 4.4.1
  • Spring Tool Suite 3.6.4
  • Java 1.8.0_31
  • Tomcat 8.0.20

各種インストール

必要なプラグインなどをインストールしていきます

STS(Spring Tool Suite)のインストール

Eclipse Marcketplaceから簡単にインストールできます

Help -> Eclipse Marcketplace -> Searchタブ -> Findに「spring」と入力して検索

とするとSTSが表示されるので「Install」をクリックして同意してEclipseを再起動することでインストールできます
install_sts.png
※上記はインストール済みのEclipse Marcketplaceでの表示

Tomcatのインストール

今回はTomcat上で動作させてみます
公式からで問題ないのでTomcatをインストールしてください
HomebrewでもOKです

brew install tomcat

TomcatをインストールしたらEclipse上に実行用のサーバとして登録します
Eclipseを起動して

Package Explorer上で右クリック -> New -> Other -> Server -> Server

と選択しNextをクリックして

Aapche -> Tomcat v8.0 Server -> Next

で「Tomcat Installation directory」にTomcatをインストールしたディレクトリを指定します
Homebrewでインストールしたのであれば/usr/local/Cellar/tomcat/8.0.20/libexec的なパスを記載します

入力したら「Finish」をクリックしてServerの作成は完了です

プロジェクトの作成

サンプルのプロジェクトを作成します
今回はSTSを使ってWebアプリ用のサンプルプロジェクトを作成します

Package Explorer上で右クリック -> New -> Other -> Spring -> Spring Starter Project

を選択しNextをクリックします

select_spring_project.png

プロジェクトの内容を設定するダイアログが表示されるので以下を入力および選択します

  • Project name・・・任意のプロジェクト名を入力します
  • Templates・・・「Spring MVC Project」を選択します

あとはそのままでOKです
入力できたらNextをクリックします
config_spring_project.png

「Spring MVC Project requires a download of 16608 bytes」という警告がでますが、Yesを選択します

次にパッケージ名を入力するダイアログが表示されるので任意のパッケージ名を入力します
最低限、3階層のパッケージ名を入力する必要があります
input_package_name.png
あとはFinishをクリックすればプロジェクトが作成されます
作成されたあとのプロジェクトのディレクトリ構成は以下のとおりです
list_project.png
サンプルプロジェクトの作成ができたら早速動かしてみましょう

Tips

  • Errors running builder ‘Faceted Project Validation Builder’ on project ‘spring-test’.

みたいなエラーが出る場合は

Help -> Install New Software

を開き

を選択し「Web, XML, Java EE and OSGi Enterprise Development」を選択しインストールしてください
Lunaの選択項目がなければ追加すればOKです
Lunaでないバージョンを使っている場合は、適宜バージョンにあったリポジトリを選択してください
結構量が多いのでインストールには時間がかかります

で、この「Web, XML, Java EE and OSGi Enterprise Development」をインストールするのにエラーになる場合は一旦STSをアンインストールしてから、先に「Web, XML, Java EE and OSGi Enterprise Development」をインストールしてください
その後STSを再インストールします

私の場合は「Web, XML, Java EE and OSGi Enterprise Development」をインストールするのに以下のエラーに悩まされました

No repository found containing: osgi.bundle,org.aspectj.runtime.source,1.7.0.20120703164200

Webで調べてみるとリポジトリの情報をリロードしてくださいという記事が多かったのですが原因はそこではなかったようです

アプリ起動

インストールしたTomcat上で動作させてみます

起動

プロジェクトを右クリックして

Run As -> Run on Server

をクリックします
Tomcatインストール時にEclipse上に作成したTomcatサーバがあると思いますのでそれを選択します
select_server.png
選択したらFinishでアプリを起動します
※注意点としてはすでに8080でTomcatや別のアプリサーバが起動している場合は停止してから実施してください

Eclipseのコンソールに起動ログがずらーっと出てくると思います
長いので一部抜粋ですが、以下のように表示されればOKです

・・・

INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization completed in 1248 ms
3 12, 2015 1:35:19 午後 org.apache.coyote.AbstractProtocol start
情報: Starting ProtocolHandler ["http-nio-8080"]
3 12, 2015 1:35:19 午後 org.apache.coyote.AbstractProtocol start
情報: Starting ProtocolHandler ["ajp-nio-8009"]
3 12, 2015 1:35:19 午後 org.apache.catalina.startup.Catalina start
情報: Server startup in 3995 ms
INFO : com.sample.sample.HomeController - Welcome home! The client locale is ja_JP.

動作確認

http://localhost:8080/sample
にアクセスして「Hello World !」と表示されることを確認しましょう
ここで出力されている情報はsrc/main/webapp/WEB-INF/views/home.jspの内容を表示しています
jsp の内容を直接書き換えれば、Tomcatを再起動しないでも内容を修正できます

最後に

やはり環境を構築するところでつまづきました
Javaだけではないですが、本質的なことをする前の部分でこけるとやる気がなくなります
そして特にJava周りの環境構築ではつまづきやすい気がします

とりあえずSpringFrameworkを使ってアプリサーバ上で動作させることができました
ちゃんとしたWebアプリを作るのであれば最初からSTSをベースに開発したほうがいいかもしれません

あとは実際にwarを作成してデプロイしてみたり、maven経由でアプリを実行できるようになると更に便利かなと思いました
ちなみにこの状態でもmvn packageでwarファイルを作成できるところまでは確認しました

0 件のコメント:

コメントを投稿