目次
Spring はどのような問題を解決するために派生したものですか? (歴史的) Spring は実際の本番環境でどのような問題を解決しますか?
Spring フレームワークではどのようなデザイン パターンが使用されていますか?
Spring 関連の依存関係 (ここには一部のみがリストされています)
春とは?
フレームワーク: Spring は Java エンタープライズ アプリケーションの開発フレームワークです.Spring が派生する前は、Struts と Herbert が当時の強力なフレームワークでした.私たちがよく知っている 3 つのレイヤーは、それぞれプレゼンテーション層と DAO 層の役割を果たし、Springロジック層とデータ層のカップリング問題を解決するために、Springはプレゼンテーション層と複数の層を接続するために使用されるアイデンティティとなり、当時主流だったサードパーティのフレームワークを統合し、ソフトウェアを全体。そして、現在の springboot と springcloud フレームワークが派生しており、それらの最下層は基本フレームワークとして spring に基づいています。
コンテナー: 以前はnew を介してオブジェクトを作成していました。自分で新しい操作。
内部IOC (Inversion of Control):オブジェクトを作成する権利は、一元管理のためにサードパーティの Spring コンテナーに渡されます(オブジェクトの作成はクラスに記述されません)。
DI (依存性注入): Spring コンテナー内のオブジェクトのプロパティに値を割り当て、一般的なオブジェクト内のプロパティは、最も一般的にインターフェイスを介して注入されます: a. セット注入 b. 構築注入
Spring の最下層はリフレクションテクノロジを使用します。これは、リフレクションなどのテクノロジを使用して、実行プロセス中にクラスのプロパティとメソッドを動的に取得するのに役立ちます。
これはAOP の側面を通じて行われ、ビジネス メソッドが拡張されます (疎結合)。一般的なアプリケーション:
- a. トランザクション制御 (メソッドの冗長性を減らし、分離 - メソッド内で毎回トランザクションの開始とトランザクションのコミットを宣言する必要はありません)
- b. ロギング
- c. セキュリティ制御 (AOP/インターセプターを実装可能)
- d. キャッシュメカニズム
- e.異常記録
- f. プログラムの実行時間を記録し、メソッドを分析して最適化する
Ecology : Spring help meet different needs, and builds of Framework classes within spring . これらのフレームワーク クラス(およびポスト プロセッサ、ファクトリ ポスト プロセッサ)は、ユーザーがカスタマイズして拡張できるため、ユーザーは自分のニーズに応じてカスタマイズできます。 . 最下層がテンプレート メソッド パターンを使用しているからこそ、さまざまなシナリオのニーズを満たすことができる拡張性を実現しています。
補足知識:動画:Springの開発履歴
Spring はどのような問題を解決するために派生したものですか? (歴史的) Spring は実際の本番環境でどのような問題を解決しますか?
①. Java EE開発プロセスの効率が悪い問題を解決する。J2EE は、エンタープライズ レベルのアプリケーション開発用に一連の厳密な仕様を提供することを知っています. そのような仕様のセットを初期段階で習得して使用することは困難です. ほとんどの学習者にとって、内容を一度に理解することはできないため、学習が必要です.コスト. Spring の出現は、これらの問題を解決し、開発者が開発しやすくするのに役立ちます. J2EE は 1999 年と 2000 年に始まり、Spring は 2002 年に登場しました.
②.Spring フレームワークを使用する最大の目的は、開発を単純化することだと思います (開発を単純化するにはどうすればよいでしょうか? Spring は 7 つのモジュールを提供し、それぞれを相互に組み合わせることができます)。
スプリングにはどのような部品が含まれていますか? (構成)
- コア: IOC サービスを提供するコア クラス ライブラリ
- コンテキスト: フレームワーク スタイルの Bean アクセス メソッドを提供するアプリケーション コンテキスト (context.getbean など、コンテナーによって提供される Bean オブジェクトを取得する方法)
- AOP: アスペクト指向プログラミング (構成のポイントは内部にあります)
- DAO: JDBC の抽象化により、データ アクセス例外の処理が簡素化されます
- ORM: オブジェクト エンティティ マッピング (エンティティ クラスにのみ注意を払う必要があります。テーブル内のフィールドを気にする必要はありません。構成後、テーブル内のフィールドはエンティティ属性値に自動的に変換されますオブジェクトの)
- Web: マルチパーティ ファイルのアップロード、リクエスト処理など、基本的な Web 指向の包括的な機能を提供します。
- MVC: Web アプリケーションのモデル ビュー コントローラーの実装を提供します。mvc のデザイン アイデアが含まれています
春の特徴は?
軽量、他のコンポーネントに依存せず、単独で使用可能
エンタープライズ アプリケーション開発の複雑さを解決できます (???)
コア: IOC、AOP
- IOC:コントロールの逆転、管理のためにオブジェクトを作成するプロセスを渡す
- AOP: 機能強化のためにソースコードを変更しないアスペクト指向プログラミング
Spring フレームワークではどのようなデザイン パターンが使用されていますか?
フレームワークの個々の場所で使用される設計パターンはここにリストされていますが、これは包括的なものではありません! !
シングルトン モード: Bean はデフォルトでシングルトンです
プロトタイプ モード: スコープをプロトタイプとして指定します。
ファクトリ モード: BeanFactory
テンプレートメソッド: postProcessBeanFactory、onRefresh、initPropertyValue
戦略パターン: XmlBeanDefinitionReader、PropertiesBeanDefinitionReader
オブザーバー パターン: リスナー、イベント、マルチキャスト
アダプタ モード: アダプタ
デコレーターパターン: BeanWrapper
責任の連鎖モード: aop を使用すると、インターセプター チェーンが最初に生成されます
プロキシ モード: 動的プロキシ
委任者モード: 委任
Spring 関連の依存関係 (ここには一部のみがリストされています)
<!-- spring context-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.3</version>
</dependency>
<!-- spring jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>6.0.4</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<!-- 德鲁伊连接依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
<!-- @Resource注解-->
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>2.1.1</version>
</dependency>
<!-- junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
jar パッケージのダウンロード
ダウンロードリンク:
JFrog https://repo.spring.io/ui/native/release/org/springframework/spring/
多くのバージョンが含まれており、必要に応じてダウンロードできます。
ダウンロード後の結果は次のとおりです。
よく使うaop、core、beansなどのjarパッケージが入っており、プロジェクトで使用する際に直接インポートすることができます。
この図は、アイデアの導入の結果を示しています。
春の連載記事:
Spring——属性注入のための Bean 管理 xml メソッド
Spring——属性注入のための Bean 管理アノテーション メソッド
春 - トランザクションとは? コミュニケーション行為?トランザクション分離レベルとは何ですか?
Spring - junit4、junit5 の使用法を統合する