#author("2023-01-27T18:31:04+09:00","default:irrp","irrp")
→Java関連

→JavaのWebアプリ開発

→DI(依存性注入)

#contents


*Spring一般 [#n46fb256]
-[[Spring Framework 6の新機能「HTTP Interface」を使ってRESTクライアントを作成してみた - 弥生開発者ブログ>https://tech-blog.yayoi-kk.co.jp/entry/2023/01/17/110000]] 2023.1

-[[50 Free Spring Framework Practice Questions for Java Programmers | by javinpaul | Javarevisited | Jan, 2023 | Medium>https://medium.com/javarevisited/50-free-spring-framework-practice-questions-for-java-programmers-80e6f330fa07]] 2023.1

-[[令和時代に「Spring入門」「Spring徹底入門」を読むとき気をつけるべきN個のこと - Qiita>https://qiita.com/suke_masa/items/392976749fce94a8ef1f]] 2019

-[[OpenAPI Generatorを使って、Spring Web MVCのエンドポイントを生成する - CLOVER🍀>https://kazuhira-r.hatenablog.com/entry/2022/12/21/001342]] 2022.12

-[[既存のJavaクラスの一部をKotlinへ移行するにはどうする?? - Uzabase for Engineers>https://tech.uzabase.com/entry/2022/11/11/145922]] 2022.11

-[[Spring Batch × Spring Integration(Spring Batch Integration)を試す - CLOVER🍀>https://kazuhira-r.hatenablog.com/entry/2022/05/20/015828]] 2022.5

-[[Spring FrameworkとSpring Bootのいろんな対応表 - Qiita>https://qiita.com/gate9/items/7351557829d7e1e668e9]] 2022



*入門記事 [#x713c279]
-[[【Spring Hack】SpringBootによるWebアプリケーション開発の入門>https://springhack.com/]] 2022.5

-[[令和時代に「Spring入門」「Spring徹底入門」を読むとき気をつけるべきN個のこと>https://qiita.com/suke_masa/items/392976749fce94a8ef1f]] 2020.10

-[[Spring Frameworkで理解するDI 依存性の注入とは何か?>http://www.atmarkit.co.jp/fjava/rensai3/springdi01/springdi01_1.html]]
--DIという言葉のうち「Dependency(依存性)」という単語は、「オブジェクトが成立するために必要な要件」という意味を持っています。この要件とは、オブジェクトの持つ属性や関連するオブジェクトなどです。
--「注入(Injection)」とは「外部からの設定(Configuration)」を意味しています。 設定ファイルやWebアプリケーションのデプロイメントディスクリプタ(web.xmlなど)での設定を「注入」と呼んでいる
--これらのことから「DI」という言葉を言い表すと「オブジェクトの成立要件に必要な情報を外部設定すること」となります。情報を外部に切り出すことで、たとえオブジェクトを利用する状況が変わったとしても、設定を変更するだけでそのオブジェクトを利用することができるようになります。つまり再利用性の高い「部品」としてオブジェクトを実装しやすくなるのです。このような再利用性の高いソフトウェア部品のことを「コンポーネント」と呼びます。

-[[Spring Bootとは?Spring Bootの基礎や使い方を初心者向けに解説!チュートリアルやおすすめの本も紹介| ITフリーランスエンジニア案件ならA-STAR(エースター)>https://agency-star.co.jp/column/spring-boot]] 2020
--最小限の設定とより少ないコード量でアプリケーションを作成して、すぐに実行できる仕組みを実装したのがSpring Bootです。
--Spring Bootでは、標準機能としてTomcatやJettyなどのWebコンテナが組み込まれています。
--WebアプリケーションをWebコンテナの組み込まれたjarファイルで起動することができ、デプロイの手間が不要となりました。
--Spring Bootでは、専用の統合開発環境である「Spring Tool Suite(STS:以下STSといいます)」が用意されています。

-[[Spring Framework / Spring Bootに入門する人はまずこの資料を読もう!>https://qiita.com/suke_masa/items/9dd3300c3190d6445ff8]]  2020.2
--[[コンテナから紐解く本当のSpring入門 #jsug / Understanding Spring Container - Speaker Deck>https://speakerdeck.com/masatoshitada/understanding-spring-container]] 2019
---ここでいうコンテナはSpringのBeanを格納するコンテナのことであり、Dockerのことではない。
---コンテナ+Beanの生成方法、DI、スコープ、プロキシについて説明

--[[図解で学ぶ Spring MVC / Architecture of Spring MVC - Speaker Deck>https://speakerdeck.com/otty375/architecture-of-spring-mvc]] 2019

-[[Spring Bootで簡単なWebアプリを作ってみたい!【準備からGet・Post表示まで】 - Qiita>https://qiita.com/takuch/items/3dc30caf45af06a01f41]] 2021.11



*公式 [#db542964]
-[[Spring Framework Documentation>https://docs.spring.io/spring-framework/docs/current/reference/html/]] 
-[[Spring · GitHub>https://github.com/spring-projects]] 


*Spring Boot [#gc0c7ca8]
-Spring Bootは、Spring Frameworkを使用して、簡単に構築できるWebアプリケーションを作成するためのフレームワークです。
--Spring Frameworkは、Javaアプリケーションを開発するための汎用的なフレームワークで、version3.0以降には、Spring Bootが含まれています。
--Spring Bootは、Spring Frameworkの機能を組み合わせ、簡単に使用できるようにしたものであり、Spring Frameworkが提供する様々な機能を組み合わせて、アプリケーションを作成するためのスターターキットという意味合いです。
--例えば、Spring MVC、Spring Data JPA、Spring Securityなどの機能を組み合わせ、アプリケーションを開発するためのスターターを提供します。
--また、Spring Bootは、アプリケーションを起動するために必要な設定や依存関係の解決、アプリケーションの自動配置などを行うことで、開発者にとって開発をスムーズにすることができます。

-[[Spring Bootで詳細な例外情報をエラーログにて出す方法 - エキサイト TechBlog.>https://tech.excite.co.jp/entry/2023/01/23/170838]] 2023.1

-[[SpringBootのMultiple Moduleの構成で、Moduleごとにapplication.ymlを設置する - エキサイト TechBlog.>https://tech.excite.co.jp/entry/2022/12/29/085816]] 2022.12

-[[Spring BootでPOSTデータサイズの設定 - asoview! TECH BLOG>https://tech.asoview.co.jp/entry/2022/12/22/102901]] 2022.12

-[[SpringBoot/Quarkus/Micronautの性能を検証してみた 〜その1 起動編〜 - Taste of Tech Topics>https://acro-engineer.hatenablog.com/entry/2022/12/21/161101]] 2022.12
-[[Spring Boot アプリケーションにおけるメトリクスの取り方の基本>https://engineering.linecorp.com/ja/blog/metrics-capture-spring]] 2022.12
-[[SpringBoot3.0でサポートされた ネイティブイメージ起動してみる - エキサイト TechBlog.>https://tech.excite.co.jp/entry/2022/12/13/114110]] 2022.12
-[[Spring bootとは?Spring frameworkとの違いは? - システム開発のプロが発注成功を手助けする【発注ラウンジ】>https://hnavi.co.jp/knowledge/blog/spring-boot/]] 2020
--Spring Frameworkは、Java言語のアプリケーション開発のために作られたフレームワークの集合体。
--Spring bootは、集合体となった機能を使いやすくするためのフレームワーク。
-[[初めてのSpringBootでのアプリケーション作成(実装編) - Qiita>https://qiita.com/a-yama/items/abc2e082987a8395a573]] 2022.9
-[[初めてのSpringBootでのアプリケーション作成(環境構築編) - Qiita>https://qiita.com/a-yama/items/8dd1e3fa61233f0fe50c]] 2022.9

-[[Spring Boot/Spring Frameworkのテストに関するドキュメントをざっくり眺めてみる - CLOVER🍀>https://kazuhira-r.hatenablog.com/entry/2022/04/08/021232]] 2022.4



**DockerとSpring Boot [#dc914d44]
-[[【Java】DockerにEclipseをインストールしてSpringの開発環境を作ってみた | システムをクラフトする日々>https://systemcraft.biz/archives/407]] 2022.9
--エディタがちらつく、日本語入力できない、しばらく触らないと勝手に閉じる
--かなり使いにくそう…やはり VS Codeで行くべきでは

-[[【SE必見】Docker + Spring Boot + Javaで環境構築 - イエノカドのプログラミング日記>https://ienokado-blog.com/2021/05/14/docker-spring-install/]] 2021.5
-[[Docker+Springbootアプリの構築方法(基礎学習用) - Qiita>https://qiita.com/bubumaru/items/1d50bf823a7206046432]] 2020
-[[Docker上でSpring Bootを動かしてみる - Qiita>https://qiita.com/tkani/items/ed56229330f00a333d5e]] 2017
-[[Getting Started | Spring Boot with Docker>https://spring.io/guides/gs/spring-boot-docker/]] 2022.12
-[[SpringBootの開発環境をdockerでつくる - Qiita>https://qiita.com/wataling/items/fa8b74fa50d80b88aea3]] 2018
-[[Spring Boot with Docker な開発環境を考える>https://blog.tiqwab.com/2017/03/21/docker-java.html]] 2017
-[[Dockerで始めるSpring Boot - Qiita>https://qiita.com/ken0909/items/a3f8594ce677bbc7c4c2]] 2017
-[[Docker で Spring Boot - 公式サンプルコード>https://spring.pleiades.io/guides/gs/spring-boot-docker/]] 2022


*Thymeleaf [#j4c80e40]
-[[Tutorial: Using Thymeleaf (ja)>https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf_ja.html]] 2018

-Springの画面表示に JSP を使うか、Thymeleaf を使うかを決める基準 2023.1
--開発者のスキル: JSPはJavaベースのテンプレートエンジンであり、Java開発者には馴染みがあります。 ThymeleafはXMLやXHTML、HTML5に対応し、JavaScriptに慣れていない開発者にも使いやすいです。
--プロジェクトの規模や要件: JSPは大規模なプロジェクトに向いています。 Thymeleafは小規模かつ静的なWebサイトなどのプロジェクトに向いています。
--パフォーマンス: JSPはサーバサイドでレンダリングされるため、高負荷なシステムには向いていません。 Thymeleafはクライアントサイドでレンダリングされるため、パフォーマンスが良いです。
--セキュリティ: JSPはJavaの構文を使用するため、セキュリティ上の問題がある可能性があります。 ThymeleafはXMLの構文を使用するため、セキュリティ上の問題が少ないです。
--開発のスピード: JSPは開発スピードは速いですが、デバッグやトラブルシューティングが難しいです。 Thymeleafは開発スピードは遅いですが、デバッグやトラブルシューティングが容易です。


*Spring MVC [#za81d751]
-Spring MVC と Thymeleafの関係
--Spring MVCは、Spring Frameworkに含まれるMVC(Model-View-Controller)アーキテクチャを実現するためのフレームワークです。
--Spring MVCは、HTTPリクエストを受け取り、適切なコントローラーに処理を委譲し、その結果をビューに渡すことで、Webアプリケーションを構築するための機能を提供します。
--Spring MVCとThymeleafは、組み合わせて使用することで、Webアプリケーションの開発を効率的に行うことができます。
--Spring MVCは、HTTPリクエストを処理し、結果を渡します。その結果を元にThymeleafが、ビューを生成します。
--Thymeleafが生成したビューを、Spring MVCがクライアントに返すことで、Webアプリケーションの表示を行っています。
--Spring MVCはサーバ側のロジックを、Thymeleafはクライアント側の表示を担当する役割を持っており、それぞれがサポートしている機能を組み合わせることで、Webアプリケーションの開発を行うことができます。


*Spring を学ぶ順序 [#idfcbc78]
-Spring Frameworkを学ぶときには、以下の順番で学ぶとよいらしい
 1.Spring Core の基本的な機能 - DI (Dependency Injection) や BeanFactory など
 2.Spring MVC の使用方法 - コントローラー、ビューなど、Webアプリケーションの開発に必要な機能
 3.Spring Data の使用方法 - データベースアクセスに必要な機能
 4.Spring Security の使用方法 - アプリケーションのセキュリティに必要な機能
 5.Spring Boot の使用方法 - Spring Frameworkを使用したアプリケーションの開発を簡単にするための機能

-Spring MVCを学ぶ際に、Thymeleafを使用したビューの作成方法を学ぶことができます。
-その為、Spring MVCを学ぶ際にThymeleafを一緒に学ぶのが適していると言えます。
-また、Spring Bootを使用する場合には、ThymeleafがSpring Bootに組み込まれているため、Spring Bootアプリケーションの開発時にThymeleafを使用することができます。


*STS(Spring Tool Suite) [#q3dc7242]

-[[Spring | Tools>https://spring.io/tools]] 2023
--Spring Tools 4 is the next generation of Spring tooling for your favorite coding environment. Largely rebuilt from scratch, it provides world-class support for developing Spring-based enterprise applications, whether you prefer Eclipse, Visual Studio Code, or Theia IDE.



*Spring Initializr [#x42fd07f]
-[[Spring Initializr クイックスタート - 公式サンプルコード>https://spring.pleiades.io/quickstart]]

-Spring Initializrは、Spring Boot アプリケーションの雛形を作成するためのWebインターフェイス(Webサイトとして実装されている)
-Spring Initializrを使用することで、簡単にSpring Bootアプリケーションの雛形を作成できる
-Spring Initializrでは、次のような項目を選択することが可能
--アーキテクチャ (Maven or Gradle)
--Javaバージョン
--Spring Bootバージョン
--依存関係 (Spring Boot Starter)
--グループIDとアーティファクトID
-Spring Initializrは、Webインターフェイスだけでなく、CLIやIDEプラグインとしても利用することができます。
-STSには、Spring Initializrを利用するためのプラグインが標準搭載されている

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS