ホームページ > Java > &#&チュートリアル > SpringBoot の面接の質問と回答は何ですか?

SpringBoot の面接の質問と回答は何ですか?

WBOY
リリース: 2023-05-13 14:16:06
転載
1401 人が閲覧しました

1. Spring Boot とは何ですか?

Spring Boot は Spring オープン ソース組織のサブプロジェクトです。Spring コンポーネントのワンストップ ソリューションです。主に
Spring の使用の難しさを簡素化し、重い構成を保存し、さまざまな機能を提供します。開発者がすぐに開始できるようにするスタートアップ ツール。

2. SpringBoot を使用する理由

迅速な開発、迅速な統合、簡素化された構成、組み込みサービス コンテナー

3. SpringBoot と SpringCloud の違い

SpringBoot 急速に開発された Spring フレームワークです SpringCloud は完全なマイクロサービス フレームワークです SpringCloud は SpringBoot に依存しています。

4.Spring Boot の利点は何ですか?

Spring Boot には主に次の利点があります。開始が簡単で、開発効率が向上し、Spring 開発のためのより高速でシンプルな開発フレームワークを提供します。面倒な設定をしなくても、箱から出してすぐに動作します。組み込みサーバー、セキュリティ管理、稼働データ監視、ヘルスチェック、外部設定など、大規模プロジェクトに共通する一連の非ビジネス機能を提供します。 SpringBoot の概要は、コーディングをよりシンプルにし、構成をよりシンプルにし、デプロイをよりシンプルにし、モニタリングをよりシンプルにすることです。

5. Spring Boot のコア アノテーションは何ですか?

主にどのような注釈で構成されていますか?スタートアップクラスのアノテーションは Spring Boot のコアアノテーションでもある @SpringBootApplication で、主な組み合わせとしては以下の 3 つのアノテーションが含まれます: @SpringBootConfiguration: @Configuration アノテーションを組み合わせて設定ファイルの機能を実装します。 @EnableAutoConfiguration: 自動構成機能をオンにするか、自動構成オプションをオフにします。例:
java データ ソース自動構成機能をオフにする場合: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
@ComponentScan: Spring コンポーネントのスキャン。 6. Spring Boot はどのロギング フレームワークをサポートしていますか?推奨されるデフォルトのロギング フレームワークは何ですか?

Spring Boot は、ロギング フレームワークとして Java Util Logging、Log4j2、および Lockback をサポートします。Starters を使用して

を起動すると、Spring Boot はデフォルトのロギング フレームワークとして Logback を使用しますが、どのような種類のロギング フレームワークでもサポートされます。ロギングフレームワークです. 設定

ファイルをコンソールまたはファイルに出力します。

7. SpringBoot Starter の動作原理

SpringBoot はさまざまな Starter で構成されていることを個人的に理解しています。Starter を自分で開発することもできます。@SpringBootApplication アノテーションは、springBoot の実行時に自動的に Maven に移動します各スターターの

spring.factories ファイルを読み取り、Spring コンテナーで作成する必要があるすべての Bean を構成し、自動構成を実行して

bean を SpringContext に注入します // (SpringContext は Spring の設定ファイル)

8. Spring Boot 2.X の新機能は何ですか? 1.X との違いは何ですか?

構成の変更 JDK バージョンのアップグレード サードパーティのクラス ライブラリのアップグレード レスポンシブ Spring プログラミングのサポート HTTP/2 構成属性のバインディングのサポート その他の改善と機能強化

#9. SpringBoot がサポートするフロントエンド テンプレート

thymeleaf、freemark、jsp、JSP は正式に推奨されていないため制限があります

10. SpringBoot のデメリット

恥ずかしいと思います。欠点を見つけたときは、自分で設定する必要がないため、エラーが報告されたときに見つけるのが難しいためだと思いました。

11. Spring Boot を実行するにはどのような方法がありますか?

コマンドをパッケージ化するか、コンテナに入れて実行します

Maven/Gradle プラグインを使用して実行します

メイン メソッドを直接実行して実行します


12. Spring Boot は実行しますか?独立したコンテナで実行する必要があるか?

その必要はありません。Tomcat/Jetty などの組み込みコンテナーがあります。

13. Spring Boot 機能を有効にする方法は何ですか?

spring-boot-starter-parent プロジェクトを継承する

spring-boot-dependency プロジェクトの依存関係をインポートする

14. SpringBoot でホット デプロイメントを実装する方法は何ですか?

ホット デプロイメントとは、SpringBoot プロジェクトを再実行することなく、実行中のプロジェクトに操作バックグラウンド コードを自動的に更新できることを意味します。

主に 2 つの方法があります:

Spring Loaded

Spring-boot -devtools

15. SpringBoot のものの使用

SpringBoot のものは非常に簡単です。最初にアノテーション EnableTransactionManagement を使用してオブジェクトを開き、次にアノテーション Transactional を

Service メソッドに追加します。 。

16. Async 非同期呼び出しメソッド

SpringBoot での非同期呼び出しの使用は非常に簡単で、メソッドの非同期

呼び出しを実現するにはメソッドに @Async アノテーションを使用するだけです。注: 非同期呼び出し @Async アノテーションを有効にするには、@EnableAsync をスタートアップ クラスに追加する必要があります。

17. Spring Boot の起動時に特定のコードを実行するにはどうすればよいですか?

あなたはインターフェイス ApplicationRunner または CommandLineRunner を実装できます。これら 2 つのインターフェイスは同じ方法で実装されます。これらは

1 つの実行メソッドのみを提供します

18. 設定を読み取るいくつかの方法は何ですか? Spring Boot で? どうですか?

Spring Boot は @PropertySource、@Value、@Environment、@ConfigurationPropertie アノテーションを通じて変数をバインドできます

19. JavaConfig とは何ですか?

Spring JavaConfig は Spring コミュニティの製品です。Spring 3.0 で導入されました。Spring IOC コンテナを設定するための
pure Java メソッドを提供します。したがって、XML 構成の使用を回避するのに役立ちます。 JavaConfig を使用する利点は次のとおりです。
オブジェクト指向の構成。構成は JavaConfig のクラスとして定義されるため、ユーザーは Java のオブジェクト指向機能を最大限に活用できます。ある構成クラスは別の構成クラスを継承したり、その @Bean メソッドをオーバーライドしたりできます。
XML 構成を減らすか削除します。依存関係注入の原則に基づいて外部化された構成の利点は証明されています。ただし、多くの開発者は XML と Java の間を行ったり来たりしたくありません。 JavaConfig は、XML 構成概念と同様に Spring コンテナーを構成するための純粋な Java 方法を開発者に提供します。技術的な観点から見ると、JavaConfig 構成クラスのみを使用してコンテナを構成することは可能ですが、実際には JavaConfig と XML を組み合わせて一致させることが理想的であると多くの人が考えています。
型安全でリファクタリングに優しい。 JavaConfig は、Spring コンテナを構成するためのタイプセーフな方法を提供します。 Java
5.0 のジェネリックスのサポートのおかげで、キャストや文字列ベースの検索を必要とせずに、名前ではなくタイプで Bean を取得できるようになりました。
一般的に使用される Java 構成:
@Configuration: このアノテーションをクラスに書き込み、このクラスが構成クラスであることを示します。
@ComponentScan: @ComponentScan アノテーションを構成クラスに追加します。デフォルトでは、このアノテーションは、このクラスが配置されているパッケージ内のすべての構成クラスをスキャンします。これは、前の と同等です。
@Bean: Bean インジェクション: 前の < Bean id="objectMapper"
class="org.codehaus.jackson.map.ObjectMapper" />
@EnableWebMvc: xml と同等 < ;mvc:annotation-driven>
@ImportResource: xml と同等< import resource="applicationContextcache.xml">

20. SpringBoot の自動構成原理とは何ですか

主にSpring Boot のスタートアップ クラスのコア アノテーションである SpringBootApplication アノテーション メイン構成クラス このメイン構成

により、クラスの開始時に Spring Boot に対して @EnableAutoConfiguration アノテーション自動構成機能が有効になります。
この EnableAutoConfiguration を使用すると、次のことが行われます。
使用できる自動構成クラスを構成ファイル META_INF/Spring.factories からロードします
重複を削除し、exclude および excludeName 属性によって保持されるクラスを除外します
Filter 、条件を満たす自動構成クラスを返します (@Conditional)

21. Spring Boot 構成の読み込み順序をどのように理解していますか?

Spring Boot では、次のメソッドを使用して構成を読み込むことができます。

1.プロパティ ファイル;
2.YAML ファイル;
3.システム環境変数;
4.コマンド ライン パラメーター;
etc.……

22 . YAMLとは何ですか?

YAML は、人間が読めるデータシリアル化言語です。通常は設定ファイルで使用されます。プロパティ ファイルと比較して、YAML ファイルはより構造化されており、構成ファイルに複雑なプロパティを

追加する場合に混乱が少なくなります。 YAML には階層的な構成データがあることがわかります。

23. YAML 構成の利点は何ですか?

YAML は現在、非常に人気のある構成ファイル形式とみなされます。フロントエンドでもバックエンドでも、YAML を確認できます。構成

セット。では、従来のプロパティ構成と比較した YAML 構成の利点は何でしょうか?

整然とした構成。一部の特殊なシナリオでは、整然とした構成が重要です。
簡潔かつ明確で、配列もサポートしています。配列内の要素は基本的なデータ型またはオブジェクトにすることができます。
プロパティ構成ファイルと比較すると、YAML には次の特徴があります。もう 1 つの欠点は、
カスタマイズされた YAML 構成をインポートするための @PropertySource アノテーションがサポートされていないことです。

24. Spring Boot は XML 構成を使用できますか?

Spring Boot では XML 構成の代わりに Java 構成を使用することをお勧めしますが、@ImportResource を通じて Spring Boot で XML 構成を使用することもできます アノテーションにより XML を導入できます構成。

25. Spring Boot のコア構成ファイルとは何ですか? bootstrap.properties と application.properties の違いは何ですか?

Spring Boot 開発を行うだけでは bootstrap.properties 設定ファイルに遭遇するのは簡単ではないかもしれませんが、Spring Cloud と組み合わせると、この設定は次のようになります。特にリモート設定ファイルをロードする必要がある場合に頻繁に発生します。

Spring ブート コアの 2 つの設定ファイル:

bootstrap (.yml または .properties): boostrap は親 ApplicationContext によってロードされ、アプリケーションの前にロードされます。設定はアプリケーション コンテキストのブート フェーズで有効になります。一般に、このファイルは Spring Cloud 構成で使用します。また、ブースストラップのプロパティはオーバーライドできません;

application (.yml または .properties): ApplicationContext によってロードされ、Spring Boot プロジェクト
の自動構成に使用されます。

26. スプリング プロファイルとは何ですか?

プロジェクト開発中、データベース接続
、redis 構成など、一部の構成ファイルは開発、テスト、運用環境などの環境によって異なる場合があります。では、異なる環境で構成を自動的に切り替えるにはどうすればよいでしょうか? Spring は、構成ファイルを前後に切り替える機能を提供する
profiles メカニズムを提供します。
Spring Profiles を使用すると、ユーザーは構成ファイル (dev、test、prod など) に基づいて Bean を登録できます。したがって、アプリケーション
が開発環境で実行されるときは、特定の Bean のみをロードできますが、本番環境では、特定の他の Bean をロードできます。
Swagger ドキュメントは QA 環境でのみ利用可能であり、他のすべてのドキュメントは無効になっているという要件があるとします。これは構成ファイルを使用して実行できます。 Spring Boot を使用すると、構成ファイルの操作が非常に簡単になります。

27. SpringBoot のマルチデータ ソース分割のアイデア

最初にプロパティ構成ファイルで 2 つのデータ ソースを構成し、サブパッケージ マッパーを作成し、@ConfigurationProperties

を使用してプロパティ構成ファイル内のプロパティを読み取ります。プロパティの設定、@MapperScan を使用して対応するマッパー パッケージに登録します

28. SpringBoot マルチデータ ソース トランザクションを管理する方法

最初の方法は、transactionManager を使用して、プロパティの @TransactionManager に指定することです。サービス層

DataSourceConfig で設定されたトランザクション
2 つ目は、jta-atomikos を使用して分散トランザクション管理を実装することです
##29. Spring Boot アプリケーションを保護する方法は何ですか?

本番環境で HTTPS を使用する

Snyk で依存関係を確認する

最新バージョンにアップグレードする
CSRF 保護を有効にする
コンテンツ セキュリティ ポリシーを使用して XSS 攻撃を防止する

30 Spring Boot アプリケーションにセキュリティを実装するにはどうすればよいですか?

Spring Boot セキュリティを実装するには、spring-boot-starter-security 依存関係を使用し、

セキュリティ構成を追加する必要があります。必要なコードはほとんどありません。構成クラスは WebSecurityConfigurerAdapter を拡張し、そのメソッドをオーバーライドする必要があります。


31. Spring Security と Shiro の長所と短所を比較してください?

Spring Boot は、Spring Security の

Starter を含む、すぐに使用できる非常に便利なスターターを公式に多数提供しているため、 Spring Boot で Spring Security を使用すると、すべてのインターフェイスを保護するための依存関係を追加するだけで済むため、Spring Boot プロジェクトの場合は、一般に Spring Security が選択されます。もちろん、これはあくまで組み合わせ例であり、技術的にはどのように組み合わせても問題ありません。 Spring Security

と比較すると、Shiro には主に次の特徴があります:

Spring Security は重量級のセキュリティ管理フレームワーク、Shiro は軽量なセキュリティ管理フレームワーク
Spring Security は概念と構成が複雑 面倒、Shiro は概念が単純シンプルな構成
Spring Security は強力な機能を備え、Shiro はシンプルな機能を備えています

32. Spring Boot でクロスドメインの問題を解決するにはどうすればよいですか?

クロスドメインは、JSONP を通じて実行できます。フロントエンドは解決しましたが、JSONP は GET リクエストのみを送信でき、他のタイプのリクエストは送信できません。RESTful スタイルのアプリケーションでは、非常に役に立ちません。そのため、バックエンドで (CORS、Crossorigin リソース共有) を使用することをお勧めします。クロスオリジンリクエストやドメインの問題を解決します。このソリューションは Spring Boot に固有のものではありません。従来の
SSM フレームワークでは、CORS を使用してクロスドメインの問題を解決できます。ただし、XML ファイルで CORS を構成する前に、

WebMvcConfigurer インターフェイスを実装できるようになりました。 addCorsMappings メソッドをオーバーライドして、クロスドメインの問題を解決します。

@Configuration
public class CorsConfig implements WebMvcConfigurer {
	@Override
	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping("/**")
		.allowedOrigins("*")
		.allowCredentials(true)
		.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
		.maxAge(3600);
	}
}
ログイン後にコピー

33. Spring Boot のモニターとは何ですか?


Spring Boot アクチュエーターは、Spring Startup フレームワークの重要な機能の 1 つです。 Spring Boot モニターは、運用環境で実行中のアプリケーションの現在のステータスにアクセスするのに役立ちます。実稼働環境では、チェックおよび監視する必要があるメトリックがいくつかあります。一部の外部アプリケーションでも、これらのサービスを使用して、関係者への警告メッセージをトリガーしている可能性があります。モニター モジュールは、ステータスをチェックするために HTTP URL として直接アクセスできる REST エンドポイントのセットを公開します

34. Spring Boot を使用してグローバル例外処理を実装するにはどうすればよいですか?

Spring は、ControllerAdvice を使用して例外を処理する非常に便利な方法を提供します。

ControlerAdvice クラスを実装することで、コントローラー クラスによってスローされたすべての例外を処理します。

35.すべての Spring Boot マイクロサービスを監視するにはどうすればよいですか?

Spring Boot は、個々のマイクロサービスのメトリクスを監視するための監視エンドポイントを提供します。これらのエンドポイントは、アプリケーション (アプリケーションが開始されているかどうかなど) やそのコンポーネント (データベースなど) が適切に実行されているかどうかに関する情報

を取得するのに役立ちます。ただし、monitor

を使用する場合の大きな欠点または難しさの 1 つは、アプリケーションのステータスや健全性を知るためにアプリケーションのナレッジ ポイントを個別に開く必要があることです。 50 個のアプリケーションを含むマイクロサービスを想像してください。管理者は 50 個のアプリケーションすべての実行端末にアクセスする必要があります。

この状況に対処するために、にあるオープンソース プロジェクトを使用します。これは Spring Boot Actuator の上に構築されており、複数のアプリケーションのメトリクスを視覚化できる Web UI を提供します。

36. SpringBoot性能如何优化

如果项目比较大,类比较多,不使用@SpringBootApplication,采用@Compoment指定扫包范

在项目启动时设置JVM初始内存和最大内存相同
将springboot内置服务器由tomcat设置为undertow

37. 如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?Spring Boot项目如何热部署?

这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启
动。Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java 开
发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新
加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring
Boot 在发布它的第一个版本时没有这个功能。这是开发人员最需要的功能。DevTools 模块完全满
足开发人员的需求。该模块将在生产环境中被禁用。它还提供 H2 数据库控制台以更好地测试应用
程序。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-devtools</artifactId>
</dependency>
ログイン後にコピー

38. SpringBoot微服务中如何实现 session 共享 ?

在微服务中,一个完整的项目被拆分成多个不相同的独立的服务,各个服务独立部署在不同的服务
器上,各自的 session 被从物理空间上隔离开了,但是经常,我们需要在不同微服务之间共享
session ,常见的方案就是 Spring Session + Redis 来实现 session 共享。将所有微服务的
session 统一保存在 Redis 上,当各个微服务对 session 有相关的读写操作时,都去操作 Redis 上
的 session 。这样就实现了 session 共享,Spring Session 基于 Spring 中的代理过滤器实现,使
得 session 的同步操作对开发人员而言是透明的,非常简便。

39. 您使用了哪些 starter maven 依赖项?

使用了下面的一些依赖项
spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持
spring-boot-starter-data-jpa 数据库支持
spring-boot-starter-data-redis redis数据库支持
spring-boot-starter-data-solr solr支持
mybatis-spring-boot-starter 第三方的mybatis集成starter
自定义的starter(如果自己开发过就可以说出来)

40. Spring Boot 中的 starter 到底是什么 ?

首先,这个 Starter 并非什么新的技术点,基本上还是基于 Spring 已有功能来实现的。首先它提
供了一个自动化配置类,一般命名为 XXXAutoConfiguration ,在这个配置类中通过条件注解来
决定一个配置是否生效(条件注解就是 Spring 中原本就有的),然后它还会提供一系列的默认配
置,也允许开发者根据实际情况自定义相关配置,然后通过类型安全的属性(spring.factories)注入
将这些配置属性注入进来,新注入的属性会代替掉默认属性。正因为如此,很多第三方框架,我们
只需要引入依赖就可以直接使用了。当然,开发者也可以自定义 Starter

41. Spring Boot 中如何实现定时任务 ?

在 Spring Boot 中使用定时任务主要有两种不同的方式,一个就是使用 Spring 中的 @Scheduled
注解,另一-个则是使用第三方框架 Quartz。
使用 Spring 中的 @Scheduled 的方式主要通过 @Scheduled 注解来实现。

42. spring-boot-starter-parent 有什么用 ?

我们都知道,新创建一个 Spring Boot 项目,默认都是有 parent 的,这个 parent 就是 springboot-starter-parent ,spring-boot-starter-parent 主要有如下作用:
定义了 Java 编译版本为 1.8 。
使用 UTF-8 格式编码。
继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依
赖,所以我们在写依赖时才不需要写版本号。
执行打包操作的配置。
自动化的资源过滤。
自动化的插件配置。
针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同
环境的配置文件,例如 application-dev.properties 和 application-dev.yml。
总结就是打包用的

43. SpringBoot如何实现打包

进入项目目录在控制台输入mvn clean package,clean是清空已存在的项目包,package进行打
包或者点击左边选项栏中的Mavne,先点击clean在点击package

44. Spring Boot によって生成された jar と通常の jar の違いは何ですか?

Spring Boot プロジェクトによって最終的にパッケージ化された jar は実行可能な jar です。この種の jar は直接パススルーできます。 java -jar xxx.jar
コマンドを実行します。この種の jar は、通常の jar として他のプロジェクトから依存することはできません。依存していても、その中のクラスは使用できません。
Spring Boot の jar は他のプロジェクトからは信頼できません。これは主にその構造が通常の jar の構造と異なるためです。通常の jar パッケージの場合、解凍後の
は直接パッケージ名であり、パッケージはコードです。解凍後、Spring Boot によってパッケージ化された実行可能 jar は \BOOTINF\classes ディレクトリにあるコードであるため、直接引用することはできません。これを参照する必要がある場合は、pom.xml ファイルに構成を追加し、Spring Boot プロジェクトを 2 つの jar (実行可能ファイルと参照可能ファイル) にパッケージ化できます。

以上がSpringBoot の面接の質問と回答は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート