トップスプリングフレームワークのインタビューの質問
1前書き
この記事では、就職の面接中に発生する可能性がある、最も一般的なSpring関連の質問をいくつか紹介します。
2スプリングコア
Q1. Spring Frameworkとは何ですか?
Springは、Java Enterprise Editionアプリケーションの開発に最も広く使用されているフレームワークです。 Springのコア機能は、あらゆるJavaアプリケーションの開発に使用できます。
その拡張機能を使用して、Java EEプラットフォーム上でさまざまなWebアプリケーションを構築することも、単純なスタンドアロンアプリケーションでその依存性注入規定を使用することもできます。
Q2. Springを使用する利点は何ですか?
SpringはJava EE開発を容易にすることを目標としています。これを使用する利点は次のとおりです。
-
軽量:
でフレームワークを使用することによるわずかなオーバーヘッドがあります。
開発
コントロールの反転(IoC):** スプリングコンテナは配線を引き受けます
作成または検索ではなく、さまざまなオブジェクトの依存関係
従属オブジェクト
アスペクト指向プログラミング(AOP):** Springは分離するためにAOPをサポートします
システムサービスからのビジネスロジック
IoCコンテナ:** Spring Beanのライフサイクルとプロジェクトを管理します
特定の構成
MVCフレームワーク:** WebアプリケーションまたはRESTfulの作成に使用されます
XML/JSON応答を返すことができるWebサービス
取引管理:** のボイラープレートコードの量を減らす
Javaアノテーションを使用したJDBC操作、ファイルのアップロードなど
またはSpring Bean XML構成ファイルによって
例外処理:** Springは翻訳に便利なAPIを提供しています。
テクノロジ固有の例外から未チェックの例外へ
** Q3. あなたはどんなSpringサブプロジェクトを知っていますか?簡単に説明してください.
-
Core
– の主要部分を提供する重要なモジュール
IoCやDIのようなフレームワーク
JDBC ** – このモジュールはJDBC抽象レイヤを有効にし、
特定のベンダーのデータベースに対してJDBCコーディングを行う必要がある
ORM統合** – ポピュラーな人のための統合層を提供します。
JPA、JDO、HibernateなどのオブジェクトリレーショナルマッピングAPI
Web ** – マルチパートファイルを提供するWeb指向の統合モジュール
アップロード、サーブレットリスナー、およびWeb指向のアプリケーションコンテキスト
機能性
MVCフレームワーク** – Model View Controllerを実装するWebモジュール
デザインパターン
AOPモジュール** – アスペクト指向プログラミングの実装
クリーンなメソッドインターセプターとポイントカットの定義
Q4. 依存性注入とは何ですか?
制御の反転(IoC)の一側面である依存性注入は、オブジェクトを手動で作成するのではなく、作成方法を説明するという一般的な概念です。 IoCコンテナは必要に応じて必要なクラスをインスタンス化します。
詳しくはこちらをご覧ください。
Q5. どうすればSpringに豆を注入できますか?
いくつかの異なるオプションがあります。
-
セッター注入
-
コンストラクタインジェクション
-
フィールドインジェクション
設定はXMLファイルまたはアノテーションを使用して行うことができます。
詳しくは、リンクをチェックしてください:/春のインバージョンコントロールと依存性の注入[この記事]。
Q6. どちらが最善の方法ですか?
推奨されるアプローチは、必須の依存関係にはコンストラクター引数を使用し、オプションの依存関係にはセッターを使用することです。コンストラクタインジェクションは不変フィールドに値をインジェクトすることを可能にし、テストをより簡単にします。
Q7.
BeanFactory
と
ApplicationContext
の違いは何ですか?
BeanFactory
は、Beanインスタンスを提供および管理するコンテナを表すインタフェースです。
getBean()
が呼び出されると、デフォルトの実装はBeanを遅延的にインスタンス化します。
ApplicationContext
は、アプリケーション内のすべての情報、メタデータ、およびBeanを保持するコンテナを表すインタフェースです。また、
BeanFactory
インタフェースも拡張されていますが、デフォルトの実装ではアプリケーションの起動時にBeanを積極的にインスタンス化します。この動作は個々のBeanに対してオーバーライドできます。
違いについては、https://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html[the reference]を参照してください。
Q8. Spring Beanとは何ですか?
Spring Beansは、Spring IoCコンテナによって初期化されるJavaオブジェクトです。
Q9. SpringフレームワークのデフォルトのBeanスコープは何ですか?
デフォルトでは、Spring Beanは
singleton
として初期化されます。
** Q10. Beanのスコープを定義する方法
Spring Beanのスコープを設定するために、XML設定ファイルで
@ Scope
アノテーションまたは “scope”属性を使うことができます。サポートされているスコープは5つあります。
-
シングルトン
-
プロトタイプ
-
リクエスト
-
セッション
-
グローバルセッション
違いについては、https://docs.spring.io/spring/docs/3.0.0.M4/reference/html/ch03s05.html[ここ]を参照してください。
Q11. シングルトンビーンはスレッドセーフですか?
いいえ、シングルトンビーンはスレッドセーフであるという点ではスレッドセーフではありません。シングルトンは作成を重視したデザインパターンです。スレッドの安全性はBeanの実装自体にのみ依存します。
==== * Q12。 Spring beanのライフサイクルはどのようなものですか?**
まず、Spring Beanは、JavaまたはXML Beanの定義に基づいてインスタンス化する必要があります。また、使用可能な状態にするために何らかの初期化を実行する必要があるかもしれません。その後、Beanが不要になると、IoCコンテナから削除されます。
すべての初期化メソッドを使用したサイクル全体が画像に表示されています(http://www.dineshonjava.com/2012/07/bean-lifecycle-and-callbacks.html[source])。
==== * Q13。 Spring Javaベースの設定とは何ですか?**
Springベースのアプリケーションをタイプセーフな方法で設定する方法の1つです。これはXMLベースの設定に代わるものです。
また、プロジェクトをXMLからJava configに移行したい場合は、リンク:/spring-xml-vs-java-config[この記事へ]を参照してください。
==== * Q14。 1つのプロジェクトに複数のSpring設定ファイルを含めることができますか?**
はい。大規模プロジェクトでは、保守性とモジュール性を高めるために複数のSpring構成を持つことをお勧めします。
複数のJavaベースの設定ファイルを読み込むことができます。
@Configuration
@Import({MainConfig.class, SchedulerConfig.class})
public class AppConfig {
または、他のすべての設定を含む1つのXMLファイルをロードします。
ApplicationContext context = new ClassPathXmlApplicationContext("spring-all.xml");
このXMLファイルの中には、
<import resource="main.xml"/>
<import resource="scheduler.xml"/>
Q15. Spring Securityとは何ですか?
Spring SecurityはSpringフレームワークの独立したモジュールであり、Javaアプリケーションでの認証方法と承認方法の提供に焦点を当てています。また、CSRF攻撃などの一般的なセキュリティの脆弱性の大部分にも対処します。
WebアプリケーションでSpring Securityを使用するには、
@ EnableWebSecurity
という簡単なアノテーションから始めましょう。
security on Baeldung
に関連する一連の記事を見つけることができます。
==== * Q16。 Spring Bootとは何ですか?**
Spring Bootは、最小限のコードでSpringアプリケーションを起動して実行できるように、定型設定を削減するための事前設定済みの一連のフレームワークを提供するプロジェクトです。
** Q17. Spring Frameworkで使用されているデザインパターンをいくつか挙げてください.
-
シングルトンパターン:
シングルトンスコープの豆 -
Factoryパターン:
Bean Factoryのクラス -
プロトタイプパターン:
プロトタイプスコープの豆 -
アダプタパターン:
Spring WebとSpring MVC -
Proxy Pattern:
Spring Aspect Oriented Programmingのサポート -
テンプレートメソッドパターン:
JdbcTemplate
、
HibernateTemplate、
など -
フロントコントローラー:
Spring MVC
DispatcherServlet
-
データアクセスオブジェクト:
Spring DAOのサポート -
モデルビューコントローラ:
Spring MVC
==== * Q18。スコープ
Prototype
はどのように機能しますか?**
スコープ
prototype
は、Beanのインスタンスを呼び出すたびに、Springが新しいインスタンスを作成してそれを返すことを意味します。これは、単一のオブジェクトインスタンスがSpring IoCコンテナごとに1回インスタンス化されるデフォルトの
singleton
スコープとは異なります。
3 Spring Web MVC
** Q19. Spring Beanで
ServletContext
および
ServletConfig
オブジェクトを取得する方法?
次のいずれかによって行うことができます。
-
Spring対応のインタフェースを実装する. 完全なリストは入手可能です
ここ
。
-
これらのBeanで
@ Autowired
アノテーションを使用する:
@Autowired
ServletContext servletContext;
@Autowired
ServletConfig servletConfig;
Q20. Spring MVCのコントローラとは何ですか?
簡単に言うと、
DispatcherServlet
によって処理されるすべてのリクエストは、
@ Controller
というアノテーションが付けられたクラスに向けられます。各コントローラクラスは、提供された入力を使用して要求を処理および実行するメソッドに1つ以上の要求をマッピングします。
一歩後退する必要がある場合は、リンクの概念を見てみることをお勧めします。
==== * Q21。
@ RequestMapping
アノテーションはどのように機能しますか?**
@ RequestMapping
アノテーションは、WebリクエストをSpring Controllerのメソッドにマッピングするために使用されます。単純なユースケースに加えて、HTTPヘッダーのマッピング、
@ PathVariableを使用したURIの一部のバインド、およびURIパラメーターと
@ RequestParam__アノテーションの使用にも使用できます。
@ RequestMapping
の詳細はリンクにあります:/spring-requestmapping[ここ]
-
Spring MVCに関するその他の質問については、https://www.baeldung.com/spring-mvc-interview-questions[Spring MVC Interview Questions]の記事** を参照してください。
4 Spring Data Access
==== * Q22。 Spring
JDBCTemplate
クラスとは何ですか?その使い方は?
Spring JDBCテンプレートは、私たちが興味を持っているデータベース操作ロジックにアクセスするための主要なAPIです。
-
コネクションの作成と終了
-
文とストアドプロシージャコールの実行
-
ResultSet
を反復処理して結果を返す
それを使うためには、
DataSource
の簡単な設定を定義する必要があります。
@Configuration
@ComponentScan("org.baeldung.jdbc")
public class SpringJdbcConfig {
@Bean
public DataSource mysqlDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/springjdbc");
dataSource.setUsername("guest__user");
dataSource.setPassword("guest__password");
return dataSource;
}
}
さらなる説明は、
このクイック記事
を参照してください。
==== * Q23。 Springでt
__ransactions
__をどのように有効にしますか?また、それらの利点は何ですか?**
注釈付きまたはアスペクト指向プログラミング(AOP)を使用して
Transactions
を構成するには、2つの異なる方法があります。それぞれ利点があります。
公式文書
によると、Spring Transactionsを使用する利点は次のとおりです。
-
異なるトランザクション間で一貫したプログラミングモデルを提供する
JTA、JDBC、Hibernate、JPA、JDOなどのAPI
** 宣言的トランザクション管理をサポート
-
プログラムによるトランザクション管理のためのより単純なAPIを提供する
JTAなどの複雑なトランザクションAPI
** Springのさまざまなデータアクセス抽象化と非常によく統合する
Q24. Spring DAOとは何ですか?
Spring Data Access Objectは、一貫した簡単な方法でJDBC、Hibernate、JPAなどのデータアクセス技術と連携するために提供されているSpringのサポートです。
もちろん、/persistence-with-spring-series/[シリーズ全体]のリンクで、永続性についてもっと深く知ることができます。
5春のアスペクト指向プログラミング(AOP)
** Q25. アスペクト指向プログラミングとは
アスペクトは、影響を受けるクラスを変更することなく、既存のコードに追加の動作を追加することによって、複数のタイプやオブジェクトにわたるトランザクション管理などの分野横断的な懸念をモジュール化することを可能にします。
アスペクトベースの実行時間ログ
の例を示します
==== * Q26。 AOPの
Aspect
、
Advice
、
Pointcut、
、および
JoinPoint
とは何ですか?**
-
Aspect
:横断的関心事を実装するクラス。
トランザクション管理
Advice
** :特定の
JoinPoint
のときに実行されるメソッド
Pointcut
と一致するアプリケーションに到達した
Pointcut ** :にマッチする一連の正規表現
Advice
を実行する必要があるかどうかを判断するための
JoinPoint
JoinPoint ** :プログラムの実行中のポイント。
メソッドの実行または例外の処理
Q27.
Weaving
とは何ですか?
official docs
によると、
weaving
はアスペクトを他のアプリケーションタイプや作成するオブジェクトとリンクするプロセスですアドバイスされたオブジェクトこれはコンパイル時、ロード時、または実行時に実行できます。 Spring AOPは、他の純粋なJava AOPフレームワークと同様に、実行時に
ウィービング
を実行します。
6. 結論
この広範な記事では、Springに関する技術面接で最も重要な質問のいくつかについて説明しました。
この記事が、これから開催されるSpringのインタビューに役立つことを願っています。がんばろう!
-
«** 前へ