SpringIOC関連する知識は知識がより重要であるかを知るために、再び一緒に置きます。非常にシンプルです。関連するインタビューの質問が見つかります。インタビューの質問が一般的である場合、この知識のポイントは依然として比較的重要です!
1 何である春が?
Springは、Javaエンタープライズアプリケーション用のオープンソース開発フレームワークです。Springは主にJavaアプリケーションの開発に使用されますが、一部の拡張機能はJ2EEプラットフォームでのWebアプリケーションの構築を目的としています。Springフレームワークの目標は、 Javaエンタープライズレベルのアプリケーション開発を簡素化し、 POJOベースのプログラミングモデルを通じて適切なプログラミング習慣を促進することです。
2 Spring Frameworkを使用する利点は何ですか?
- 軽量: Springは軽量で、基本バージョンは約2MBです。
- 制御の反転: Springは、制御の反転によって疎結合を実現します。オブジェクトは、依存オブジェクトを作成または検索する代わりに、依存関係を提供します。
- アスペクト指向プログラミング(AOP):Springはアスペクト指向プログラミングをサポートし、アプリケーションビジネスロジックとシステムサービスを分離します。
- コンテナ: Springは、アプリケーション内のオブジェクトのライフサイクルと構成を含み、管理します。
- MVCフレームワーク: SpringのWEBフレームワークは適切に設計されたフレームワークであり、Webフレームワークの優れた代替手段です。
- トランザクション管理: Springは、ローカルトランザクションからグローバルトランザクション(JTA)まで拡張できる継続的なトランザクション管理インターフェースを提供します。
- 例外処理: Springは、特定のテクノロジー関連の例外(JDBC、Hibernate、またはJDOによってスローされたものなど)を一貫したチェックされていない例外に変換するための便利なAPIを提供します。
3Springはどのモジュールで構成されていますか?
Simpleは 6つの主要なモジュールに分割できます。
- 芯
- AOP
- 蛇
- DAO
- ウェブ
- 春のEE
4BeanFactoryの実装例
Beanファクトリーは、ファクトリー・パターンの実装であり、アプリケーションの構成と依存関係を実際のアプリケーション・コードから分離するための制御反転機能を提供します。
Spring 3.2 以前は、最も一般的に使用されていたのはXmlBeanFactoryですが、現在では廃止され、XmlBeanDefinitionReaderおよびDefaultListableBeanFactoryに置き換えられています。
5 Spring の依存性注入とは何ですか?
IOCの1つの側面である依存性注入は一般的な概念であり、複数の解釈があります。概念は、オブジェクトを作成する必要はなく、作成方法を説明することだけが必要であるということです。コンポーネントとサービスをコードで直接アセンブルするのではなく、どのコンポーネントがどのサービスを必要とするかを構成ファイルで説明する必要があります。その後、コンテナー( IOCコンテナー)がそれらのアセンブルを担当します。
6 IOC (Dependency Injection)にはどのような種類がありますか?
- コンストラクター依存性注入:コンストラクター依存性注入は、クラスコンストラクターをトリガーするコンテナーによって実装されます。クラスには一連のパラメーターがあり、各パラメーターは他のクラスへの依存関係を表します。
- セッターメソッドインジェクション:セッターメソッドインジェクションとは、コンテナーがパラメーターなしのコンストラクターまたはパラメーターなしの静的ファクトリーメソッドを呼び出してBeanをインスタンス化した後、Beanのセッターメソッドが呼び出され、セッターベースの依存性インジェクションを実装することです。
- 工場注入:これは残っており、めったに使用されません!
7. 推奨する依存関係注入メソッド、コンストラクター注入、またはセッターメソッド注入?
依存関係メソッド、コンストラクター注入とセッターメソッド注入の両方を使用できます。最善の解決策は、必須の依存関係を実装するためにコンストラクターパラメーターを使用し、オプションの依存関係を実装するためにセッターメソッドを使用することです。
8 春豆とは?
Spring Beanは、Springアプリケーションのバックボーンを形成するJavaオブジェクトです。これらは、 Spring IOCコンテナーによって初期化、アセンブル、および管理されます。これらのBeanは、コンテナで構成されたメタデータから作成されます。たとえば、XMLファイルでは<bean />の形式で定義されています。
Springコンテナに構成メタデータを提供するには、4つの重要な方法があります。
- XML構成ファイル。
- 注釈ベースの構成。
- 基づいて Java設定。
- Groovy DSL構成
9 Spring フレームワークでのBean のライフサイクルを説明する
- SpringコンテナはXMLファイルからBeanの定義を読み取り、Beanをインスタンス化します。
- Springは、Bean定義に従ってすべての属性を設定します。
- BeanがBeanNameAwareインターフェースを実装している場合、SpringはBean IDをsetBeanNameメソッドに渡します。
- BeanがBeanFactoryAwareインターフェースを実装している場合、SpringはbeanfactoryをsetBeanFactoryメソッドに渡します。
- Beanに関連付けられたBeanPostProcessors がある場合、SpringはそれらをpostProcesserBeforeInitialization()メソッドで呼び出します。
- BeanがIntializingBeanを実装している場合は、そのafterPropertySetメソッドを呼び出し、Beanが初期化メソッドを宣言している場合は、この初期化メソッドを呼び出します。
- Beanに関連付けられたBeanPostProcessors がある場合、これらのBeanのpostProcessAfterInitialization()メソッドが呼び出されます。
- BeanがDisposableBeanを実装している場合は、destroy()メソッドを呼び出します。
10 自動組み立てのさまざまな方法を説明する
- no:デフォルトの方法では、自動アセンブリを実行せず、ref属性を明示的に設定してアセンブリを実行します。
- byName:パラメータ名を自動接続することにより、SpringコンテナはBeanのautowire属性が設定ファイルでbynameに設定されていることを検出し、コンテナはBeanの属性と同じ名前のBeanを照合してアセンブルしようとしました。
- byType ::パラメータタイプのautowiringを通じて、SpringコンテナはBeanのautowire属性が設定ファイルでbyTypeに設定されていることを検出し、コンテナは同じタイプのBean属性の照合、アセンブル、およびBeanを試行しました。複数のBeanが条件を満たす場合、エラーがスローされます。
- コンストラクタ:このメソッドはbyTypeに似ていますが、コンストラクタパラメータに提供する必要があります。パラメータ付きのコンストラクタの決定されたパラメータタイプがない場合は、例外がスローされます。
- autodetect:最初にコンストラクターを使用して自動的にアセンブルしてみて、機能しない場合は、byTypeメソッドを使用します。
アノテーションのみを使用する場合、アノテーションはデフォルトで byTypeを使用します。
11 IOC の利点は何ですか?
IOCまたは依存性注入により、アプリケーションコードの量が最小限に抑えられます。これにより、アプリケーションのテストが容易になり、単体テストでシングルトンやJNDIルックアップメカニズムが不要になります。最小限のコストと最小限の侵入で疎結合が可能になります。IOCコンテナーは、サービスのロード時に、空腹の初期化と遅延ロードをサポートします。
12 重要なBean ライフサイクルメソッドは何ですか?それらをオーバーロードできますか?
2つの重要な Beanライフサイクルメソッドがあります。1つ目はsetup で 、コンテナが Beanをロードするときに呼び出されます。2番目のメソッドはティアダウンです。 これは、コンテナーがクラスをアンロードするときに呼び出されます。
Beanタグには2つの重要な属性(init-method と destroy-method )があります。それらを使用して、初期化とログアウトの方法を自分でカスタマイズできます。また、対応するアノテーション( @PostConstruct および @PreDestroy )もあります。
13 インタビュアーへの回答方法:Springをどのように理解していますか?
14Spring シングルトンフレームワークの豆は、そのスレッドセーフでありますか?
Springフレームワークは、シングルトンBeanのマルチスレッドカプセル化を実行しません。シングルトンBeanのスレッドの安全性と並行性の問題は、開発者自身が解決する必要があります。ただし、実際には、ほとんどのSpring Beanには可変状態(ServiewクラスやDAOクラスなど)がないため、ある程度、SpringのシングルトンBeanはスレッドセーフです。Beanに複数の状態( View Modelオブジェクトなど)がある場合は、自分でスレッドの安全性を確保する必要があります。
最も明白な解決策は、ポリモーフィック Beanのスコープを「シングルトン」から「プロトタイプ」に変更することです。
15 FileSystemResource とClassPathResourceの違いは何ですか?
で FileSystemResource必要性は、プロジェクトのバネ-config.xmlファイルへの相対パスまたは絶対パスを与えます。ClassPathResourceでは、Springが自動的にClassPath内の構成ファイルを検索するため、ClassPathResourceファイルはClassPathの下に配置する必要があります。
spring-config.xmlをsrcフォルダーに保存する場合、srcフォルダーがデフォルトであるため、構成ファイルの名前を指定するだけで済みます。
つまり、ClassPathResourceは環境変数の構成ファイルを読み取り、FileSystemResourceは構成ファイルの構成ファイルを読み取ります。