→[[Java関連]] →[[S2AOP]] →詳細設計 #contents *概要 [#c04ce02c] -DIはinterfaceの変数に対してその実装を用途に応じて挿げ替えるような動作を指すことが多いようだ。(ただし例えばJBoss Seamのバイジェクションなどはクラスに対しても行えるので、interfaceに限る話ではない) -[[JavaのモジュールシステムでSPIとDIを実現するやり方: プログラマの思索>https://forza.cocolog-nifty.com/blog/2022/11/post-7eb252.html]] 2022.11 -[[DI(依存性の注入)×AOP(アスペクト指向)の常識>http://www.atmarkit.co.jp/fjava/rensai4/enterprise_jboss03/01.html]] 2009.11.2 -Javaの@EJBアノテーションもDIの一種です→[[EJB関連]] -[[DIとAOPがサーバ・コンポーネント技術を変える>http://www.atmarkit.co.jp/fjava/kaisetsu/j2eewatch07/j2eewatch07_1.html]] --なぜCGIやサーブレットだけでは不十分で、DIコンテナやEJBコンテナが必要な局面があるのでしょうか。その理由としては、主に以下の点が挙げられます。 ---リソース・プーリング ---データベース・アクセス ---トランザクション管理 ---セキュリティ管理 --Dependency Injectionでは、コンテナ(フレームワーク)が提供するさまざまなサービスを利用する際に、「コンテナのサービスをコンポーネントから呼び出す」のではなく、「コンポーネントに対しコンテナがサービスを注入する」という方法を用いる。これにより、コンポーネントがさまざまなサービスやAPI、またはほかのコンポーネントに依存してしまうことを防ぐ技法だ。 -[[Dependency Injection for Loose Coupling:http://www.codeproject.com/useritems/DependencyInjection.asp]] 2006.4.19 --Loose Coupling =疎結合性のことか? -[[Dependency Injectionの解説(Java):http://codezine.jp/a/article.aspx?aid=60]] *Spring [#d1ca8eb1] -[[Spring Framework / Spring Bootに入門する人はまずこの資料を読もう! #jsug - Qiita>https://qiita.com/suke_masa/items/9dd3300c3190d6445ff8]] 2019 --[[コンテナから紐解く本当のSpring入門 #jsug / Understanding Spring Container - Speaker Deck>https://speakerdeck.com/masatoshitada/understanding-spring-container]] 2019 --[[図解で学ぶ Spring MVC / Architecture of Spring MVC - Speaker Deck>https://speakerdeck.com/otty375/architecture-of-spring-mvc]] 2019 -[[令和時代に「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 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 · GitHub>https://github.com/spring-projects]] **Spring Boot [#gc0c7ca8] -[[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 -[[Spring Bootで簡単なWebアプリを作ってみたい!【準備からGet・Post表示まで】 - Qiita>https://qiita.com/takuch/items/3dc30caf45af06a01f41]] 2021.11 -[[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 **DockerとSpring Boot [#dc914d44] -[[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 -[[Dockerで始めるSpring Boot - Qiita>https://qiita.com/ken0909/items/a3f8594ce677bbc7c4c2]] 2017 *JavaEEのCDI [#k7a87bd0] -[[CDI1.1から追加されたbean-discovery-mode>https://gloryof.hatenablog.com/entry/20131205/1386170095]] 2013 -[[CDI を理解する為に重要なレシピ>http://yoshio3.com/2015/04/15/cdi-essential-recipes/]] 2015.4.15 -[[CDIが業務システム開発にもたらすメリットとは? EJBとの使い分けは?──最新Java EE開発“虎の穴” 第3回 上妻宜人氏>http://builder.japan.zdnet.com/sp_oracle/weblogic/35045391/]] 2014.3.24 -[[Java EEのCDIで定義しておくと便利なプロデューサーとインターセプター>http://d.hatena.ne.jp/nowokay/20131213]] 2013.12.13 -[[CDIを利用したサンプルアプリーケションの作成 >http://codezine.jp/article/detail/6593]] -[[Seam3:Java EE 6時代のWeb開発>http://thinkit.co.jp/book/2011/03/03/2031]] 2011.3.3 --Java EE 6におけるCDI仕様の概要とそのオープンソース実装であるSeam3/Weldについて概要を説明 -[[Java EE環境におけるCDIのデフォルト化>http://n-agetsuma.hatenablog.com/entry/2013/08/18/130358]] 2013.8.18 -[[Java EE 6: Understanding Contexts and Dependency Injection (CDI), Part 1 >https://blogs.oracle.com/nishigaya/entry/javaee6_understanding_cdi_part_1]] --[[Part2>https://blogs.oracle.com/nishigaya/entry/javaee6_understanding_cdi_part_2]] *Seaser [#g5db6df1] -SAStrutsについては→SAStruts関連 -S2JDBCについては→O/Rマッピング -S2AOPについては→[[S2AOP]] -[[Seasar3開発中止>http://d.hatena.ne.jp/higayasuo/20100806/1281080100]] 2010.8.6 -Seasarでスタンドアロンアプリを作るとき --初期化で SingletonS2ContainerFactory.init(); --DIしたいときは hoge = (Hoge) SingletonS2Container.getComponent(Hoge.class); --終了で SingletonS2ContainerFactory.destroy(); --もちろんHogeはdiconに設定書く。 -@ResourceはSeasarでインジェクション先となる変数であることを示すアノテーション。ただしSeasarではメンバをpublicにすれば@Resourceををつけなくてもインジェクションされる模様 -[[Seasar Sample Project>http://www.wikiroom.com/oreju/?%A5%B7%A1%BC%A5%B5%A1%BC%A5%B5%A5%F3%A5%D7%A5%EB%A5%D7%A5%ED%A5%B8%A5%A7%A5%AF%A5%C8]] -[[The Seasar Project>http://www.seasar.org/index.html]] --DI (Dependency Injection) とAOP (Aspect Oriented Programming) をサポートした軽量コンテナ --[[機能リファレンス>http://s2container.seasar.org/2.4/ja/DIContainer.html]] -[[Seasar DI container with AOP>http://cvs.sourceforge.jp/view/seasar/s2-dao/doc/DIContainer.html?revision=1.1]] -[[DI+AOPを実現するSeasarV2>http://www.atmarkit.co.jp/fjava/rensai3/seasar2_02/seasar2_02_2.html]] *その他 [#t288a8d9] -[[Python で DI(Dependency Injection) を実現するフレームワークの Injector を使ってみる | DevelopersIO>https://dev.classmethod.jp/articles/python-injector-launch01/]] 2022.11 -[[「DI使うとインタフェース地獄に陥るらしいから使いたくない」と言っていたA氏がインタフェースを使わずにDIで幸せになるまで>https://qiita.com/jun1s/items/55b12c7febd7de6a0a45]] 2021.10 -[[.NETのDIコンテナの簡単なまとめ>http://spring-net.jp/modules/newbb/viewtopic.php?post_id=50&topic_id=20&forum=8]]