blog

032 JavaEEに関する質問: Spring

導入\n\nSpring IOCとは何ですか?\nIOC:\nInversion of Controlの略で、Spring IOCはオブジェクトの作成と管理を行います。IOCはオブジェクトを組み立て、...

Jul 20, 2020 · 5 min. read
シェア

導入

Spring IOCとは何ですか?

BeanFactory AppliacationContextとの違いは何ですか?

BeanFactory基本型IOCコンテナは、完了したIOCサービスのサポートを提供します。指定されていない場合、デフォルトで遅延初期化ストラテジーが使用されます。相対的に言って、コンテナの初期化速度は速く、必要なリソースは限られています。

ApplicationContextApplicationContextは、BeanFactoryをベースに構築された、比較的高度なコンテナ実装で、BeanFactoryのすべてのサポートに加えて、ApplicationContextはイベントパブリッシング、国際化サポート、その他の機能も提供します。ApplicationContextによって管理されるオブジェクトは、コンテナ起動後にデフォルトですべて初期化され、バインドされます。

SpringはいくつのBeanスコープをサポートしていますか?

Spring BeanのデフォルトのスコープはSingletonです。

Springフレームワークの単一のインスタンスBeanはスレッドセーフですか?

スレッドセーフではありません。共有変数がある場合、誰もがその変数を呼び出すことができ、その時点でスレッドセーフの問題が発生します。

豆の自動組立とは何ですか?自動アセンブルの方法にはどのようなものがありますか?

自動アセンブリ:Spring設定ファイルにjavaBeans間の依存関係を記述する必要はありません。

組み立てを自動化する5つの方法

  • no: デフォルトの方法は、自動アセンブルを行わないことで、明示的に ref 属性を設定します。
  • byName: name autowireでは、SpringコンテナはBeanのautowire属性がbynameに設定されていることを設定ファイルで検出し、コンテナはBeanの属性と同じ名前のBeanにマッチして組み立てようとします。
  • byType: パラメータ型のautowireによって、SpringコンテナはBeanのautowireプロパティがbyTypeに設定されていることを設定ファイルで発見し、Beanのプロパティと同じ型のプロパティを持つBeanをマッチングして組み立てようとします。
  • コンストラクタ: これは byType と似ていますが、コンストラクタのパラメータとして渡されます。
  • autodetect: まずコンストラクタを使って自動適合を試み、うまくいかなければbyTypeを使います。

springのAOPとは??

AOP:フルネームアスペクト指向プログラミング、つまり:カッター指向プログラミング。AOPは、OOPの継続であり、ソフトウェア開発のホットスポットであるだけでなく、Springフレームワークの重要な要素は、関数型プログラミングパラダイムの派生です。AOPの使用は、ビジネスロジックの様々な部分を分離することができ、このようにビジネスロジックの様々な部分の間の結合が低減され、プログラムの再利用性を向上させ、開発効率を向上させます。あなたが実行する必要があるときに、動的なプロキシの技術を使用し、既存のメソッドに基づいてソースコードを変更することなく、プログラムから反復的なコードを抽出強化します。AOPは、反復的なコードの伝統的な垂直継承システムの代わりに、水平方向の抽出メカニズムを採用しています。

AOPの技術は、密封されたオブジェクトの内部を解剖し、"アスペクト"、すなわち、カット面という名前の再利用可能なモジュールに複数のクラスに影響を与えるそれらの公共の動作をカプセル化する "クロスカット "と呼ばれる技術を使用しています。いわゆる "ファセット "は、簡単に言えば、ビジネスとは何の関係もない人が、共通の呼び出しロジックや責任のビジネスモジュールのためのシステムコードの重複の削減を容易にするためにカプセル化され、モジュール間の結合を減らし、将来の操作性と保守性に資するものです。AOPは「クロスカッティング」技法を使い、ソフトウェアシステムをコアコンテンションとクロスカッティングコンテンションの2つの部分に分割します。主なビジネスプロセスは中核的な関心事であり、関連性の低い部分は横断的な関心事です。横断的な関心事の特徴は、特権認証、ロギング、物事など、コアとなる関心事の中の複数の場所で発生し、場所によって本質的に類似していることが多いことです。AOPの役割は、システム内のさまざまな懸念を分離し、中核的な懸念と横断的な懸念を分離することです。AOPの核心はファセットであり、複数のクラスの一般的な振る舞いを、横断的な機能を提供するAPIのセットを含む再利用可能なモジュールにカプセル化します。例えば、ロギングモジュールは、ロギングのためのAOPカットアウトと呼ぶことができます。要件に応じて、アプリケーションは複数のファセットを持つことができます。Spring AOPでは、ファセットは@Aspectでアノテーションされたクラスを通して実装されます。

古典的なアプリケーション:トランザクション管理、パフォーマンス監視、セキュリティチェック、キャッシュ、ロギングなど。

AOPこれはどのように実装されるのでしょうか。

基礎となるAOPはプロキシ機構を使用して実装されます。

  • インターフェイス + 実装クラス: Spring は jdk の動的プロキシ Proxy を使用します。
  • 実装クラス: spring は cglib バイトコード拡張を使用します。

AOPの概念は何ですか。

ジョインポイント:インターセプトされるポイント。Springではメソッド型のJoinpointしかサポートしていないため、これらのポイントはメソッドを指します。ポイントカット:どのJoinpointをインターセプトするか。アドバイス:Joinpointがインターセプトされた後に何をすべきか、強化コード。Introduction: Introductionは特別な通知で、クラスのコードを変更することなく、実行時にクラスにいくつかのメソッドやフィールドを動的に追加することができます。 ⑤Target: ターゲットクラス、プロキシされる必要があるクラス。 ⑥Weaving: 新しいプロキシオブジェクトを作成するためにターゲットオブジェクトに機能強化を適用するプロセス。springでは動的プロキシウィーヴィング、AspectJではコンパイル時ウィーヴィングとクラスローディングウィーヴィングが用いられます。(7)プロキシ:プロキシクラスは、クラスが機能拡張にAOPウィービングされ、その結果、プロキシクラスが生成されます。Aspect:エントリポイントと通知の組み合わせです。

Springでクラスのスコープを定義するには?

SpringでBeanを定義するとき、Beanのスコープを宣言できます。これはBean定義のscope属性で定義できます。SpringがBeanが必要になるたびに新しいインスタンスを生成したい場合、Beanのscope属性はprototypeとして指定されます。 Beanが使用されるたびに同じインスタンスを返す必要がある場合、Beanのscope属性はsingletonとして指定されます。

Read next

CreateMLアプリのミニマリスト手順

Create MLは、AppleがWWDC 2018で発表した機械学習モデルを生成するためのツールです。ユーザーから与えられたデータを受け取り、iOS開発に必要な機械学習モデルを生成します。 WWDC 2019のCreate MLは、使いやすさの点でさらに一歩進んでいます。操作にプログラミングは不要で、独立したM...

Jul 20, 2020 · 6 min read