忘れないための記録

勉強会のメモなどを投下します。

はじめましてSpring & Spring Boot!勉強会に参加してきた話

2月23日、初めてフレームワークの勉強をすべく、Java女子部の勉強会に参加してきました。
勉強会の振り返りのため、資料を見返しながら自分流にまとめてみました。

勉強会のゴール

・初心者 ⇒ Springを知る
・経験者 ⇒ Springへの理解を深める。
☆今後Springを学習する際の土台作り

・資料 

フレームワークとは

-システム開発で頻繁に使用する処理(データアクセス、セッション管理、認証etc.)を
 提供してくれるもの。
フレームワークを利用することで、上記処理に対してパワーを割かずに、
 ビジネスロジックに集中できるようになる。

簡単に言うとどんなシステムでも使う機能のプログラムのひな型であり、枠組みのこと、らしい。
 

Spring Projectとは


複数のコンポーネントを組み合わせできる。
よく聞くSpring FrameworkもSpring Projectの一部。
他にSpring Dataやら、Spring Batchやらある模様。
⇒今回の勉強会で利用したSpring BootもSpring Projectの一部

Spring FrameWorkの一部について

Spring core
 Dependency Injection (DI)
※Springだけの機能ではない。
直訳すると「依存性の注入」。デザインパターン
利用したいインスタンスを利用する側でnewして生成するのではなく、外部で設定する。

DIの流れとしては以下の通り(JavaConfigベース)
①Bean定義(=Springに管理してほしいインスタンスだとわかるように定義すること )したらDIコンテナに登録される
②利用する側のクラスでBeanをインジェクション(=クラス間の依存関係を外から入れてあげる事)して使う。

今回は「Java Configベース」「アノテーションベース」というBean定義を使用した。
DIを採用することによって以下のような恩恵があるそうだ。
インスタンスの作成や初期化処理などを切り出せるのでコードの見通しが良くなる。
②DIコンテナにインスタンスのスコープやライフサイクルを管理してもらえる。
③テストでインスタンスの差し替えがしやすくなる。
 
 Aspect Oriented Programming (AOP)
※今回のハンズオンでは使用していない。
オブジェクト指向ではうまく分離できない特徴を「アスペクト」とみなし、アスペクト記述言語を
用いて分離して記述すること(アスペクト指向プログラミング - Wikipedia

参考:

thinkit.co.jp


Spring MVC
SpringでWebアプリケーションを開発する際に利用するフレームワークの一つ。
アーキテクチャパターンとしてMVCパターンを採用してるもの。
基本機能は画面遷移と入出力パラメータの受け渡しの模様。
 
   
Spring Boot
Springをより手軽に、最小限の設定で使えるようにしたもの。
以下のような特徴がある。
 
• Auto Configuration  
⇒ Springを使用するには多くの設定が必要であるが、その多くの設定がデフォルトで用意されている。
• Spring Boot Starter
⇒ 必要なライブラリをまとめてくれる仕組み。
• Stand-alone Application
⇒ jarを生成する際に組み込みサーバを含んでくれるので単体で実行可能。

 
参考:

qiita.com

 

Spring & Spring Boot まとめ

• Springは複数のコンポーネント(Spring Core, Spring MVC, etc.)の組み合わせでできている
• Springの根幹はDIにあり
• Springをより手軽に使えるようにしたのが Spring Boot
 


参考

ハンズオン演習

今回利用したAPI


以下、勉強会中の参考情報(めもしたことなど)

・MavenProjectとは
 Bildツールのこと
 他にgradleというツールを使用することもある。

・Spring Bootを利用する際は、基本的にはSPRING INITIALIZRから落としてきたものに肉付けしてWebアプリケーションを作成する。
 
ハンズオンで作成したWebアプリの実行に失敗した。
原因としては、配布されたAnswerプログラムの実行を行い、Tomcatを停止せずIntelliJを閉じてしまったために、8080が掴まれたままになってしまっていたからである。
以下の手順で解決していただいた。
①IJからコマンドプロンプロ操作ができるので、Terminalにて「netstat」コマンド(使用されてるポートを確認する)を叩く。
以下を使用するとズラーットでなくて済む。
netstat -aon | find "8080"」

②「taskkill /pid 8756 /F」 を叩く。(強制的に8080をつかんでいたタスクをKillした)