春の顔の質問のハイライト(選択)

以下は、ネットワークから収集した、オリジナルのソースを見つけることができません。インタビューのための主要なコレクションは、私が手助けをしたい~~~~

春の顔の質問のハイライト(選択)

1.春は何ですか?

春は、オープンソースのJava EE開発フレームワークです。春のフレームワークのコア機能は、任意のJavaアプリケーションに適用することができますが、Java EEプラットフォーム上のWebアプリケーションのスケーラビリティがあります。春のフレームワークの目標は、良いプログラミングスタイルを促進するためにPOJOベースのプログラミングモデルを使用することによって、より単純なJava EEアプリケーションの開発を行うことです。

2.Spring利点は何ですか?

  • 軽量:春のみ2メガバイト程度Springフレームワークの軽量、基本的なバージョン属し絶対的な大きさと透明性の点から好ましいです。
  • コントロール(IOC)の反転:春は疎結合を達成するために、制御技術の反転を使用。依存性ではなく作成または依存オブジェクトを探して、物体に注入されます。
  • アスペクト指向プログラミング(AOP):春のアスペクト指向のプログラミングサポート、アプリケーションおよびシステムサービスのビジネスロジックを分離しています。
  • コンテナ:春が含まれていると、アプリケーションオブジェクトの設定とライフサイクルを管理します。
  • MVCフレームワーク:春のWebフレームワークは、優れたWebフレームワークの一部を置き換えるために、適切に設計されたWeb MVCフレームワークです。
  • トランザクション管理:ローカルビジネスの次のグローバルビジネスへの春(JAT)は、統一されたトランザクション管理インターフェイスを提供します。
  • 例外処理:春は、一様に(JDBC、Hibernateは、またはJDOによってスロー)の便利なAPI異常特定の技術を提供してチェックされない例外です。

3.春情勢はどのような方法を実現するには?

  • プログラムによるトランザクション管理:あなたは大きな柔軟性をもたらすことができる。この手段は、プログラムで、このように業務を管理し、それを維持することは困難です。
  • 宣言型トランザクション管理:あなたはトランザクション管理とビジネスコードを分離できることをこのアプローチ手段。あなただけの注釈やXML構成管理業務を必要としています。

トランザクション管理フレームワーク4.Spring利点は何ですか?

  • それは、(JTA、JDBC、Hibernateは、JPA、およびJDOなど)異なるトランザクションAPI全体で統一されたプログラミングモデルを提供します。
  • これは、単純なAPIではなく、複雑なトランザクションのAPI(例えばJTA)のシリーズを提供します。これは、プログラムによるトランザクション管理のための宣言的トランザクション管理をサポートしています。
  • これはよく統合することができ、Springのさまざまなデータが技術にアクセスします。

伝播ルールの5.springトランザクション定義

  • PROPAGATION_REQUIRED:現在のトランザクションのサポートは、トランザクションなしならば、我々は新たなビジネスを作成します。これは、最も一般的な選択です。
  • PROPAGATION_SUPPORTS:現在のトランザクションのサポート、何のトランザクションが非トランザクションの方法で実行されていない場合。
  • PROPAGATION_MANDATORY:現在のトランザクションのサポートは、トランザクションなしている場合、例外をスローします。
  • PROPAGATION_REQUIRES_NEW:新しいトランザクション、現在のトランザクションが存在する場合、現在のトランザクションが保留中。
  • PROPAGATION_NOT_SUPPORTEDは:非トランザクションウェイに操作を実行し、現在のトランザクションが存在する場合は、保留中の現在のトランザクションを置きます。
  • PROPAGATION_NEVER:現在のトランザクションが存在する場合は、例外がスローされ、非トランザクションの方法を実行します。
  • PROPAGATION_NESTED:現在のトランザクションが存在する場合は、ネストされたトランザクション内で実行されます。何の取引はPROPAGATION_REQUIRED同様の操作で行われていない場合。

基礎となる原則総務を6.Spring

  • 分割処理部--IoC

スプリングが局所的に処理する単一のデータベーストランザクションの問題があるため、特定の実装最初のトランザクション処理部は、バネのIoCに分割されています。トランザクションの様々な構成及び(トランザクション・マネージャは、トランザクションセットおよび分離機構の伝搬特性を提供)IOCコンテナを配置します。

  • AOPインターセプタは、トランザクション処理クラスのために必要

スプリングトランザクションモジュールは、宣言型トランザクションAOP機能、プロキシプロキシオブジェクトを生成するためにAOP TransactionProxyFactoryBeanインタフェース機能を用いて、(このような構成とリードトランザクション、抽象トランザクション・オブジェクトのインプリメンテーションとして)特定の操作、完全TransactionInterceptorによって実現されます傍受プロキシアプローチ、傍受の方法に取引の織り機能。IOCのコンテナ設定は、トランザクション属性、データ構造、内部変換を読み取る(TransactionAttributeSourceAdvisor使用)トランザクションスプリング、TransactionAttribute変換データオブジェクト表現のために必要とされます。

  • トランザクション処理を実装するには(世代、コミット、ロールバック、一時停止)

春には、特定のトランザクション・プロセッサに委託しました。抽象的で適応を実装します。特定のトランザクション・プロセッサは適応:データソースのデータソースがサポートする、トランザクション・サポート・ソース・データを休止、JDOトランザクション・サポート・ソース・データを、JPA、JTAトランザクション・サポート・ソース・データを。これらは、設計PlatformTransactionManager、支援AbstractPlatforTransaction一連の取引によりサポートされています。トランザクションマネージャーは、一般的に使用されるデータソースのサポートの範囲を提供しています。

  • コンバイン

PlatformTransactionManagerはTransactionInterceptionインターフェースはTransactionProxyFactoryBeanと組み合わされ、システム設計スプリング宣言的トランザクションを形成せて実現しました。

7.春のシングルトンの実装原理

春のフレームワークは、単一の実施形態レジストリの単一例によりサポートされて実施されたコンフィギュレーション・ファイルの構成情報は、単一の実施形態の使用を必要としない場合は、レジストリは、HashMapのオブジェクトをキャッシュされている、例の新しいスプリングリターン方法を使用します。オブジェクトインスタンス。

8. IOC(依存性注入)の種類は何ですか?

  • コンストラクタ依存性注入:コンストラクタ依存性注入の際に容器トリガコンストラクタ完了すると、この構成は、パラメータの数、各表現オブジェクト注入を有します。
  • セッタ注入法は、に依存している:第一の容器は、オブジェクトをインスタンス化する引数コンストラクタまたは引数なし静的ファクトリメソッドをトリガしない場合、呼び出しセッターメソッド豆容器が完了したセッターメソッドは注射を依存しています。

  • 注釈注入:@Autowired基づく自動アセンブリ、デフォルトは、注射の型であり、それは、コンストラクタ、フィールド、メソッドの注射のために使用することができます。

9.依存性注入、あなたは何をお勧めしますか?コンストラクタ依存性注入法やセッター依存性注入?

あなたが同時に依存性の注入を2つのメソッドを使用することができ、最良のオプションは、オプションの依存関係を実装するsetterメソッドを使用して、コンストラクタ依存性注入の力を使用して実装されています。

10.簡単に春のフレームワーク?

コンセプト

  • 春は、Java EEアプリケーション・ソリューションに取り組んで、それは強力な、安定した機能を提供し、エンタープライズクラスのJavaの開発を簡素化、軽量フレームワークです。
  • 春は二つの主な目的を持っている:まず、それが簡単に、従来技術を使用できるようにすること、第二は、良いプログラミングの練習(またはと呼ばれるベストプラクティス)の推進であります

利点

  • 軽量:軽量属し絶対的な大きさと透明性の点では春、唯一の2メガバイト程度Springフレームワークの基本的なバージョン
  • コントロール(IOC)の反転:春は疎結合を達成するために、制御技術の反転を使用。依存性ではなく作成または依存オブジェクトを探して、物体に注入されます。
  • 便利なデカップリング、簡素化開発:春が大きい工場です、あなたが春を管理するために、すべてのオブジェクトの依存関係を作成し、維持することができます
  • AOPプログラミングのサポート:春はアスペクト指向プログラミングを提供し、あなたは簡単に、切片にプログラム許可を実装監視などの機能を実行することができます
  • 宣言型トランザクションのサポート:唯一の構成管理を通じてマニュアルプログラミングを必要とせずにトランザクションを完了するために
  • 優れたフレームワークの種々の容易な統合:春は、優れた内部フレームワークを数多く提供して優れたオープンソースのフレームワーク、様々なことを排除するものではない:(等Struts2の、Hibernateは、MyBatisの、石英など)の直接サポート

  • 難易度の使用削減するのJavaEE API:いくつかのAPIのJavaEE開発のための春(JDBC、JavaMailの、リモート呼び出しなど)を使用することは非常に困難であり、大幅にこれらのAPIアプリケーションの難しさを減少させることをパッケージ提供

11.春の簡単な7つのモジュール?

  • スプリングコア:コアカプセルは、IOC及び依存性注入特性を提供するために、フレームワークの最も基本的な部分です。ここでの基本的な考え方は、プログラムシングルトンの必要性を排除するために古典的なFactoryパターンを提供し、あなたが本当に設定から依存関係とプログラムロジックを分離できますたBeanFactory、です。

  • 春コンテキスト:コアに基づいて構築されたコンテキストカプセルカプセル化パケットは、オブジェクトへのアクセス方法は、ややJNDI-レジストリのように、フレームワークスタイルを提供します。コンテキストカプセル化されたパケットの特性は、サーブレットコンテナによって、例えば、リソースのローディング及びコンテキストを作成するための透明な方法でパケットをカプセル化豆に由来し、(例えばリソース・バンドル)の国際化(I18N)のサポートを追加し、イベント伝播。

  • スプリングDAO:DAO(データアクセスオブジェクト)がJDBC-抽象化層を提供し、それはJDBCコーディング、データベースベンダ固有の解析退屈なエラー・コードを排除することができます。そして、JDBCパッケージには、宣言的トランザクション管理方法のプログラミングよりも優れたパッケージを提供して特定のインターフェイスを実現するためだけでなく、POJOのすべてに対して(昔ながらのJavaオブジェクト)に適用されています。

  • 春ORM:ORMパッケージは、統合層のAPIをマッピングする一般的な「オブジェクト/リレーショナル」を提供します。JPA、JDO、HibernateとiBatisのを含みます。ORMパッケージを使用して、単純な宣言的トランザクション管理機能は、前述した、春「O / R」マッピングによって提供されるすべての特性と混合することができます。

  • 春AOPは:春AOPパッケージには、たとえば、メソッドインターセプター(法・インターセプター)および接線ポイント(ポイントカット)は、論理的に、このようにコードを弱め、AOPアライアンス準拠の実装はあなたが定義することができます指向プログラミングを提供しますカップリングの特徴は、彼らが明確に分離されています。また、ソースレベルのメタデータ機能の使用は、また、あなたのコードに行動のさまざまな情報をマージすることができます。

  • 春のWeb:SpringのWebパッケージには、このような複数ファイルのアップロードなどの基本的なWeb開発指向の統合機能を提供し、サーブレットリスナーの使用はApplicationContextのIOCコンテナの初期化とWebのためでした。スプリングWebWorkの又はストラットと組み合わせて使用​​される場合、このパッケージは、他のスプリングフレームと組み合わせることができるです。

  • 春のWeb MVC:Spring MVCのパッケージには、WebアプリケーションのModel-View-Controller(MVC)の実装を提供します。スプリングMVCフレームワークだけでなく、機種コードとWebフォームとの間の領域に、明確に分離モデルを提供し、従来のインプリメンテーションを提供します。そして、また、春のフレームワークの他の特徴による。

12.春のデザインパターン

春は、一般的に私たちの例では、9を達成するためのデザインパターンを使用しました。

最初:シンプル工場

また、静的ファクトリメソッド(StaticFactory方法)モードとして知られているが、GOFのデザインパターンの23種類のいずれかに属していません。シンプルなファクトリパターンの本質は、動的な製品を作成するために、どのクラスを決定する必要があり、渡されたパラメータに応じてクラスファクトリです。たBeanFactoryにおけるばねは前に特定のパラメータに基づくべきかどうかが、パラメータを作成するために通過するか、このような状況を作成するために通過した後、渡された一意の識別子からBeanオブジェクトを取得するために、単純なファクトリパターンの実施形態です。

第二:ファクトリメソッド(ファクトリメソッド)

一般的に、直接新しいオブジェクトを作成する新しいアプリケーションで使用される、相分離の作成するために、使用するオブジェクト、工場モデルの使用には、そのアプリケーションを作成し、ファクトリオブジェクトへのオブジェクトの責任を初期化します。通常の状況下では、アプリケーションがBeanを作成するための独自のファクトリオブジェクトを持っています。アプリケーションは、春の自社工場管理の対象となる場合は、春の管理は、一般的な豆が、工場出荷時の豆ではありません。

第三:シングルトンパターン(シングルトン)

クラスはインスタンスを1つだけ持っていることを確認し、それをアクセスするためのグローバルアクセスポイントを提供します。
単一バネ実施の形態の後、文章の半分が完了し、即ち、グローバルアクセスポイントたBeanFactoryを提供します。しかしばね管理は任意のJavaオブジェクトであるため、ビルダーのレベルを制御するために単一の実施形態。

第四:アダプター(アダプター)

AOPは春に、アドバイスはプロキシクラスの機能を強化するために(通知)を使用しました。スプリングプロキシ機能モードの使用でこの原理を実現するAOP(1、JDKの動的プロキシ.2、CGLIBバイトコード生成技術剤)セクションのレベルを強化する方法に基づいて、すなわち、プロキシクラスが生成されたプロキシクラス、およびプロキシクラスメソッドは、インターセプタが提供される前に、エージェントは、ブロックコンテンツ高い点、アスペクト指向プログラミングの実装を行うことにより、方法の機能性を向上させます。

フィフス:ラッパー(デコ)

必要に応じて複数のデータベースを接続するための私たちのプロジェクトの必要性、および異なる顧客のアクセス異なるデータベースへの各訪問する:そのよう私たちのプロジェクトで問題が発生しました。過去には、我々は常に春とデータソースを設定するための枠組みを休止状態、これSessionFactoryのdataSourceプロパティデータソースと定数、のSessionFactoryを使用して、すべてのDAOを常にポイントは、アクセスするために、このデータソースデータベースを介してです。しかし、今、プロジェクトの必要性のために、我々は複数のデータソースでのSessionFactoryにアクセスする際に常にDAOを切り替える必要があり、疑問が生じる:SessionFactoryのは、データの永続性の時間を実行するようにする方法を、顧客の需要に応じてすることができ、動的に切り替えさまざまなデータソース?私たちは、わずかな変更で春の枠組み内で解決することはできませんか?それを利用することができます任意のデザインパターンはありますか?まず、中のApplicationContextの春に構成されているすべてのデータソースを考えます。また、さまざまなデータソースであってもよい、オラクル、SQL Serverのは、MySQL、など:これらのデータソースには、異なるデータベースなど、さまざまなタイプのものであってもよい例org.apache.commons.dbcp.BasicDataSourceのためにapacheの提供、春の提供組織。 springframework.jndi.JndiObjectFactoryBeanのように。クライアントによってSessionFactoryの各要求、データソースの切り替えの目的を達成するために、異なるデータソースへのdataSource属性セット。
クラス名に2つの形式でパッケージングモードで使用春:1は、クラス名はラッパーが含まれている別のデコレータが含まれていたクラス名です。基本的にオブジェクトを動的にいくつかの追加の責任を追加します。

第六:プロキシ(プロキシ)

他のオブジェクトへのオブジェクトへのアクセスを制御するためのプロキシを提供します。構造Decoratorパターン等、より多くの機能上の制限のようなプロキシ、および増加デューティデコレータを制御されます。
スプリングは、プロキシモードAOP、例えばJdkDynamicAopProxy及びCglib2AopProxyに反映しています。

セブンス:オブザーバー(オブザーバー)

オブジェクトの状態が変化するが、それに依存するすべてのオブジェクトが自動的に通知され、更新されている主題多く、間の依存関係の定義。
オブザーバーモードでの春は、一般的に、リスナーの実現の代わりに使用されます。ApplicationListenerとして。

第八:戦略(ストラテジー)

一連のアルゴリズムを定義し、それらを一つ一つをカプセル化し、それらが交換可能になります。このモードでは、アルゴリズムは、独立して、それを使用するクライアントの変化させることができます。

第九:メソッドテンプレート(テンプレートメソッド)

アルゴリズムは、動作のスケルトン、サブクラス遅延にいくつかのステップを定義します。Template Methodアルゴリズムのアルゴリズムの特定のステップの構造を変更しなくてもよいサブクラスが再定義します。
Template Method継承パターンが一般的に必要とされます。ここでは、別の種類の探求したいTemplate Method理解を。JdbcTemplate春、このクラスのメソッドが多すぎているため、このクラスのこのクラスを使用するときに継承させたいが、我々はまだ安定を持っている必要はありませんがJdbcTemplate、公共のデータベース接続を使用するので、私たちはどのように行うのですか?私たちは、パラメータとして渡されたJdbcTemplateへの方法のうち、物事を変更することができます。しかし、物事には、コードを変更して、コードがJdbcTemplate変数に使用されます。方法は?その後、我々はコールバックオブジェクトバーを使用します。JdbcTemplateは、このコールバックオブジェクト内の変数を操作する方法を定義して、我々は、このメソッドを実装する必要があり、ここで何かにフォーカスの変更を置きます。その後、我々はこのように、コールを完了、JdbcTemplateにこのコールバックオブジェクトを渡します。これは、テンプレートメソッドは、それを達成するための別の方法を継承する必要はありませんかもしれません。

たBeanFactoryと13.ApplicationContext差

双方は、Bean XML構成ファイルを介してロードされ、さApplicationContextBeanFacotry追加の拡張を提供するために、比較が、主な違いは、後者が、ロードを遅延することではなく、単一のプロパティビーン注射ならBeanFacotryローディング後、最初まで使用コールgetBeanメソッドは例外をスローします。ApplicationContextの間、依存関係プロパティインジェクションかどうかを確認するのに役立ちます初期化テスト自体、で、その通常我々はのApplicationContextを使用することを選択しました。

BeanFactroy遅延読み込みの形式のみに使用されているビーン、注入するために使用するBean時間は、(コールgetBean())、唯一の我々は、既存のいくつか見つけることができないのでこと、ビーンがインスタンス化されるロードするSpring構成の問題を。そして、ApplicationContextときにすべてを一度に作成されたコンテナが開始されると、逆に、それがありますBeanコンテナの起動時にこのように、我々は見つけることができますSpring構成エラーが存在します。

BeanFactoryそして、ApplicationContextサポートBeanPostProcessorBeanFactoryPostProcessor:使用していますが、2つの違いはあるBeanFactory手動で登録する必要があり、ApplicationContextそれが自動的に登録されています

14.どのようにのIoCとDIを理解するには?

IOCは:
IOCは、制御の反転、我々はオブジェクト自体のインスタンスを作成しないことを言うのは人気があり、これらは経営を作成するために私たちを助けるためにのSpring Beanの工場に引き渡されています。これは、ビジネス・コンポーネントの動的な依存性を達成するためのインタフェース指向プログラミングの方法により、春の核となるアイデアです。IOCは、スプリングが決済手続きのために結合されていることを、この手段が存在します。実際には、スプリングは、構成ファイル(XMLまたはプロパティ)で指定されたスプリングによって提供される負荷により、コンフィギュレーションファイルを読み取り、これらのJavaクラスの初期値のセットを含む、インスタンス化するJavaクラス(文字列全体のクラス名)に必要方法(getBeanは())あなたは私たちが望む指定された設定に従って初期化されたオブジェクトのインスタンスを取得することができます。

  • 長所:IOCの依存性注入やアプリケーションのコードの量を減らします。それは、単一の実施形態を必要としないか、JNDIルックメカニズムは細胞試験ではもはやているので、テストのアプリケーションは非常にシンプルであることができます。単純な実装と疎結合が達成されるように、より少ない干渉機構。IOCコンテナ支持グランドシングルトンと遅延ロードサービス。

** DI:DI依存**注入、すなわち、「依存性注入」:実行時のコンポーネント間の依存関係が容器によって決定され、コンポーネントに容器ダイナミック依存性によって注入される画像は述べています。依存性の注入は、ソフトウェアシステムに多くの機能を持ってますが、コンポーネントの再利用頻度を向上させるために、そして柔軟でスケーラブルなプラットフォームを構築するためのシステムのためのものではありません。経由して依存性注入メカニズム、我々は唯一の簡単な設定を必要とし、任意のコードをせずに、特定のリソースを心配することなく、自社のビジネスロジックを完了するために必要なターゲット・リソースを指定することができます達成するために、誰から来ます。

15. AOP関連の用語を紹介しますか?

  • セクション(態様):抽出された共通モジュールは、複数のオブジェクトを横断してもよいです。春AOPでは、側面は一般的なカテゴリに実装するクラス(スタイルベースモード)または@AspectJアノテーションを使用して実装されています。

  • 接続点は、(点に参加):春AOPに、接続点は、常にメソッドの実行を表す、方法を指します。

  • 通知(アドバイス):アクションは、接続点(点に参加)の特定のセクションについて行わ。「前」と「後」と通知などの「周り」、などのアドバイスの異なるタイプ。スプリングを含む多くのAOPフレームワークは、インターセプタモデルとしての助言に基づいて、及びインターセプタチェーンの中心点との接続を維持しています。

  • エントリーポイント(ポイントカット)は:我々はポイントを右に参加した切片を定義する必要が開始点を指します。このようインターセプトの追加を指定したポイントカット表現指定インターセプト法により、検索

  • 導入(導入):(も呼ばれる内蔵型宣言(インタータイプ宣言))。追加のメソッドやフィールドの特定の種類を宣言します。スプリングは、プロキシ内の任意のオブジェクトに新たなインターフェース(および対応する実装)の導入を可能にします。たとえば、キャッシュを簡素化するために、Bean実装するisModifiedインタフェースへの導入を使用することができます。

  • 視聴者(対象オブジェクト):一つ以上の部分(側面)(アドバイス)オブジェクトによって通知されます。一部の人々は、それが(adviced)オブジェクトを通知されて呼び出します。スプリングAOPプロキシを実行することによって達成されるので、このオブジェクトは、プロキシ(プロキシ)オブジェクトであることが常にあります。

  • (ウィービング)製織する:エンハンスメントを指すは、プロセスの新しいプロキシオブジェクトを作成するために、ターゲットオブジェクトに適用されます。春は、ランタイム織りで行われます。

コンセプトポイントカット(ポイントカット)との接続点は、(ジョインポイント)AOPは古い技術の唯一の傍受を提供する他のAOPから、それは違うキー、ある一致しました。ポイントカットは、独立してOOのレベルの(アドバイス)を有効にします。例えば、アドバイス文の周囲のトランザクション管理を提供するための方法(例えば、すべてのビジネスサービス層操作)複数の間でオブジェクトのセットに適用することができます。

AOP関連の用語

16.どのように春AOPを理解していますか?

コンセプト

指向プログラミング。AOPはプログラムを改善するために、ビジネス・ロジックは、部品間の結合の程度を低減するように、AOPは、ビジネスロジックの各部分を分離することができる使用して、ホットソフトウェアの開発であり、重要な要素はSpringフレームワークであるOOPの続きであります再利用、開発の効率を向上させながら。

核となるアイデアは、
強化され、プログラムの前提の下でソースコードを変更することはできません

原則
春のフレームワークAOP技術の基礎となるエージェント技術は、バイトコードを変更することはない、いわゆる動的プロキシのAOPフレームワークを採用しているのではなく、メモリ内の一時的な方法のAOPオブジェクトを生成し、オブジェクトがターゲットオブジェクトAOPが含まれていますすべての方法及び強調処理における特定のカットオフ点を行い、コールバック元のオブジェクト。春AOPのダイナミックプロキシ主に二つの方法、ありますJDK動的プロキシとCGLIB動的プロキシが。

  • JDKダイナミックエージェント:リフレクションを通じてプロキシクラスを受け、プロキシクラスがインタフェースを実装する必要がありますが必要です。コアJDKの動的プロキシのInvocationHandlerインタフェースとプロキシクラスです。

  • CGLIB动态代理: 如果目标类没有实现接口,那么 Spring AOP 会选择使用 CGLIB 来动态代理目标类 。CGLIB ( Code Generation Library ),是一个代码生成的类库,可以在运行时动态的生成某个类的子类,注意, CGLIB 是通过继承的方式做的动态代理,因此如果某个类被标记为 final ,那么它是无法使用 CGLIB 做动态代理的。

17. Spring中有哪些增强处理,区别?

  • 前置增强:org.springframework.aop.BeforeAdvice代表前置增强,表示在目标方法整形前实施增强
  • 后置增强:org.springframework.aop.AfterReturningAdvice代表后置增强,表示在目标方法执行后实施增强
  • 环绕增强:org.springframework.aop.MethodInterceptor代表环绕增强,表示在目标方法执行前后实施增强
  • 异常抛出增强 :org.springframework.aop.ThrowsAdvice代表抛出异常增强,表示在目标方法抛出异常后实施增强
  • 引介增强:org.springframework.aop.IntroductionInterceptor代表引介增强,表示在目标类中添加一些新的方法和属性

18. Spring中支持的Bean作用域有哪些?

支持如下五种不同的作用域

  • Singleton(默认):在Spring IOC容器中仅存在一个Bean实例,Bean以单实例的方式存在。
  • Prototype:一个bean可以定义多个实例
  • Request:每次HTTP请求都会创建一个新的Bean。该作用域仅适用于WebApplicationContext环境。
  • Session:一个HTTP Session定义一个Bean。该作用域仅适用于WebApplicationContext环境.
  • GolbalSession:同一个全局HTTP Session定义一个Bean。该作用域同样仅适用于WebApplicationContext环境.

19.如何定义bean的作用域?

Spring中创建一个bean的时候,我们可以声明它的作用域。只需要在bean定义的时候通过scope属性定义即可。例如,当Spring需要产生每次一个新的bean实例时,应该声明beanscope属性为prototype。如果每次你希望Spring返回一个实例,应该声明beanscope属性为singleton

20.说一说Spring框架中的bean的生命周期?

  • Spring容器读取XML文件中bean的定义并实例化bean。
  • Spring根据bean的定义设置属性值。
  • 如果该Bean实现了BeanNameAware接口,Spring将bean的id传递给setBeanName()方法。
  • 如果该Bean实现了BeanFactoryAware接口,Spring将beanfactory传递给setBeanFactory()方法。
  • 如果任何bean BeanPostProcessors 和该bean相关,Spring调用postProcessBeforeInitialization()方法。
  • 如果该Bean实现了InitializingBean接口,调用Bean中的afterPropertiesSet方法。如果bean有初始化函数声明,调用相应的初始化方法。
  • 如果任何bean BeanPostProcessors 和该bean相关,调用postProcessAfterInitialization()方法。
  • 如果该bean实现了DisposableBean,调用destroy()方法。

21.哪些是最重要的bean生命周期方法,是否能重写它们?

有两个重要的bean生命周期方法。

  • 第一个是setup方法,该方法在容器加载bean的时候被调用。
  • 第二个是teardown方法,该方法在bean从容器中移除的时候调用。
    bean标签有两个重要的属性(init-method 和 destroy-method),你可以通过这两个属性定义自己的初始化方法和析构方法。
    Spring也有相应的注解:@PostConstruct@PreDestroy

22.有几种不同类型的自动代理?

BeanNameAutoProxyCreator
DefaultAdvisorAutoProxyCreator
Metadata autoproxying

23. 什么是Spring的内部bean?

当一个bean仅被用作另一个bean的属性时,它能被声明为一个内部bean,为了定义inner bean,在Spring 的 基于XML的 配置元数据中,可以在 或 元素内使用 元素,内部bean通常是匿名的,它们的Scope一般是prototype。

24. Spring中自动装配的方式有哪些?

  • no:不进行自动装配,手动设置Bean的依赖关系。
  • byName:根据Bean的名字进行自动装配。
  • byType:根据Bean的类型进行自动装配。
  • constructor:类似于byType,不过是应用于构造器的参数,如果正好有一个Bean与构造器的参数类型相同则可以自动装配,否则会导致错误。
  • autodetect:如果有默认的构造器,则通过constructor的方式进行自动装配,否则使用byType的方式进行自动装配。

说明:自动装配没有自定义装配方式那么精确,而且不能自动装配简单属性(基本类型、字符串等),在使用时应注意。

25.你可以在Spring中注入null或空字符串吗?

完全可以。

26. 不同版本的 Spring Framework 有哪些主要功能?

Version Feature
Spring 2.5 发布于 2007 年。这是第一个支持注解的版本。
Spring 3 发布于 2009 年。它完全利用了 Java5 中的改进,并为 JEE6 提供了支持。
Spring 4.0 发布于 2013 年。这是第一个完全支持 JAVA8 的版本。。

27.spring DAO 有什么用?

Spring DAO 使得 JDBC,Hibernate 或 JDO 这样的数据访问技术更容易以一种统一的方式工作。这使得用户容易在持久性技术之间切换。它还允许您在编写代码时,无需考虑捕获每种技术不同的异常。

28. 列举 Spring DAO 抛出的异常。

spring-data-access-exception

29. spring JDBC API 中存在哪些类?

  • JdbcTemplate
  • SimpleJdbcTemplate
  • NamedParameterJdbcTemplate
  • SimpleJdbcInsert
  • SimpleJdbcCall

30.Spring AOP and AspectJ AOP 有什么区别?

Spring AOP 基于动态代理方式实现;AspectJ 基于静态代理方式实现。
Spring AOP 仅支持方法级别的 PointCut;提供了完全的 AOP 支持,它还支持属性级别的 PointCut。

推荐

大厂笔试内容集合(内有详细解析) 持续更新中....

ProcessOn是一个在线作图工具的聚合平台~

文末

欢迎关注个人微信公众号:Coder编程
欢迎关注Coder编程公众号,主要分享数据结构与算法、Java相关知识体系、框架知识及原理、Spring全家桶、微服务项目实战、DevOps实践之路、每日一篇互联网大厂面试或笔试题以及PMP项目管理知识等。更多精彩内容正在路上~
新建了一个qq群:315211365,欢迎大家进群交流一起学习。谢谢了!也可以介绍给身边有需要的朋友。

含まれる記事
のGithub:https://github.com/CoderMerlin/coder-programming
Gitee:https://gitee.com/573059382/coder-programming
歓迎の注意とスター〜
マイクロチャンネル公衆数

おすすめ

転載: www.cnblogs.com/coder-programming/p/12002277.html