zoomzoomzoom

解決方法の共有に主眼を置くブログ・他雑談

Spring徹底入門13章13.1 つまづき

Spring徹底入門を購入した。

Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発 | 株式会社NTTデータ |本 | 通販 | Amazon

 

framework完全初心者なので、著者の方たちがおすすめするように、13章14章からはじめ、作りながら「こんな感じで動くのか」と理解していくこととする。

 

13章のツマヅキ(+気づき):

・DemoApplicationのpackageの宣言に関して

私の環境では、サブパッケージがきちんと作成されておらず、エディタ上に丁寧に小さな×マークがついていた。

対策→comパッケージの下に、com.exampleパッケージを新たに作成し、DemoApplication.javaを移動。

 

・HelloWorldを表示されない

webブラウザでlocalhost:8080にアクセスすると、Whitelabel error logメッセが表示され、helloworldがでない。どうやら8080ポートがすでに使用されている模様。

対策→9000番ポートを使用するようにする。具体的には、resourcesのapplication.propertiesにserver.port=9000と記述し保存。

 

追記(20170122)

・テストの実行ができない。

テストケースのサンプルはあるが、これが実行できない。

開発初心者の私は、テストなど未経験。どのようにやればよいのか作法もわからない。

テストのためのサンプルコードを見て、「mainメソッドないやん。テストするコードになにか追記して呼び出すタイプの何かか?」と考えた。

 Javaのテストってどうやるのかな、と考え、ネット上でお勉強。

 

以下私の頭の中。

変更が原因でソフトが動かなくなったら大変だから、こまめにテストする必要。しかし人力println出力や人力デバッグは大変。Testを機械に任せる方法の登場。回帰テスト。テスト対象はメソッド。@Testをつけるのが決まり。実行はテストとして実行(ctrl+shift+x,t)

 

実行方法も知らなかったので大変勉強になりました。

さて、じゃあ実行してみよう。ctrl+shift+x,t

type TestRestTemplate cannot convert to type RestTemplate

というエラー。教科書の通りやったのに。。。教科書のページ下部の注釈に"RestTemplateの使い方は"とあったのでそちらを勉強。

 

以下私の頭の中。

RestTemplateというのを使えば、

・リクエストURIの組み立て*

・HTTPリクエスト送受信

・レスポンスボディをJavaオブジェクトへ変換

という3つの項目ができる。

RestTemplateのアーキテクチャにはTestRestTemplateなんてないなあ。どうなっているんだ?もう少し読み進めてみよう。

RestTemplateはざっくり、以下の流れか。

アプリからオブジェクトもらう→JSONに変換→リクエスト送信→REST APIから受信→オブジェクトに戻す→アプリに戻す

 

そのまま読み進める。

依存ライブラリ?

 

ここでDemoApplicationTestsに戻ってソースを見直すと、ソースの誤りを発見。

RestTemplate restTemplate = new TestRestTemplate();となっていたところを、new RestTemplate();に変更。教科書の通りにやったらエラーなんですか。。。

その他セミコロンとコロンを間違えていたところとかを修正して、テスト実行したところ、動きました。

 

・(気づき)autoConfigurationに精通する必要性。

Springでは手間な初期設定を自動でやっておいてくれるautoConfigurationなるアノテーションが存在する。自動で動くということは、変更を加えたい場合には、どこで何を設定しているのかを知らないといけないということである。

各autoConfigurationのソースは、下記で読める。

github.com

 

・(気づき)starterの便利さ

starterはライブラリの依存関係とバージョン管理をまとめてやってくれる。starterとautoConfigurationと組み合わせて大きな意味での「初期設定」がスキップできてしまう。すごい時短になる。

starterのソースコードは下記。

github.com

 

 ・mavenのコマンド実行

mavenのコマンドってどこに打ち込むんだ?

そもそもmaven初めてだぞ・・・ということで下記サイトでお勉強。

Mavenってなにする人なの?

コマンドはコンソールに直打ちするものらしい。sts上では打てないのか?

mvn --versionで確認すると、そもそもmvn自体がインストールされていない模様。上記サイトはインストールから基本操作までを教えてくれた。

http://maven.apache.org/ maven公式から最新版のbin-zipをダウンロード。私の場合は3.3.9だった。ダウンロードしたものをC:ドライブ直下で「ここに解凍」をして、環境変数Pathに解凍したファイルのbinのディレクトリPathをコピペして、下記コマンドで確認。

mvn --version 

成功。mavenのversion確認ができた。

mvnの使用方法はプロジェクトのルートディレクトリまで移動し実行するとのこと。

実行するもsts上のtargetディレクトリには変化なし・・・

どうすればいいのかわかる方教えてください(切望)

 

 

判明したTodo:

14章を終えてから以下のことをする

出会った〇〇autoConfigurationのソースを読む

出会った〇〇starterのソースを読む。