#はじめに
ピュアJavaとDBの基本知識のみスタートからのSpring案件が波乱の末ひと段落したので、所感や覚書などを。
記事の内容としてはチュートリアル以上、実践未満のイメージ。
#開発環境
RedHat(開発環境はCent)7系
Java8
SpringBoot2.1.6
MySQL8系
STS
#Spring Framework について
10年もののフレームワークで、大体のことができる、つまり、ごちゃごちゃしてる。
情報を入手するときは書籍にせよネットにせよ、鮮度を確認する。
特に設定に関して、XML地獄からはすでに解放され、アノテーションやapplication.propertiesに記述できることが多い。
https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html
#application.propertiesについて
後から知った application.yml のほうが見やすそう。
設定できるものは↓。暇なときにざっと眺めておくといい、ざっと。
https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html
application.propertiesは環境によって切り替えることができる。
コマンドラインから実行するときは --spring.profiles.active
https://qiita.com/NagaokaKenichi/items/fd9b5e698776fe9b9cc4
STSから実行するときは
奥深いので、ひねった使い方するとハマりそう。シンプルにいこう。
https://blog.tagbangers.co.jp/ja/2019/07/12/how-spring-deals-with-properties
Springで作成するWEBシステムの構成
MVCでDIでAOPな設計を提供している。
それぞれ頭の中で構成図をイメージできるようにしておくと設計やバグ探しのとき役立つ。
リスナーやカスタムバリデーションの実装とか、テストコードの環境とかで、なるほどなぁってなる。
https://qiita.com/kazuki43zoo/items/757b557c05f548c6c5db
#DIについて
結局「コントローラーとDB関連クラスはDI対象にする」くらいの理解。
@Autowired
していたけど良くないみたい。今はコンストラクタインジェクションを使用するのが主流らしい。
https://qiita.com/jackazu/items/aead50c699fefe56c120
意識しないといけないのは、@Controller
とかつけるとSpringがDI対象と判断して勝手にインスタンス化するのでnew HogeController()
とかしない。nullになるので。
DI対象のインスタンスはシングルトン。
設定によって変えられるらしいけど、変えなければいけないと思ったら設計のほうを疑うべし、らしい。
コントローラーのメンバ変数にユーザの情報を保持したら別のユーザにどんどん書き換えられちゃった。
#他のメモ
初めてのSpring案件を終えたメモ ~データベース編~
初めてのSpring案件を終えたメモ ~MVC編~