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

オブジェクトを取得する方法?

次のいずれかによって行うことができます。

  1. Spring対応のインタフェースを実装する. 完全なリストは入手可能です

  1. これらの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のインタビューに役立つことを願っています。がんばろう!

  • «** 前へ