Spring Boot は Spring オープン ソース組織のサブプロジェクトです。Spring コンポーネントのワンストップ ソリューションです。主に
Spring の使用の難しさを簡素化し、重い構成を保存し、さまざまな機能を提供します。開発者がすぐに開始できるようにするスタートアップ ツール。
迅速な開発、迅速な統合、簡素化された構成、組み込みサービス コンテナー
SpringBoot 急速に開発された Spring フレームワークです SpringCloud は完全なマイクロサービス フレームワークです SpringCloud は SpringBoot に依存しています。
Spring Boot には主に次の利点があります。開始が簡単で、開発効率が向上し、Spring 開発のためのより高速でシンプルな開発フレームワークを提供します。面倒な設定をしなくても、箱から出してすぐに動作します。組み込みサーバー、セキュリティ管理、稼働データ監視、ヘルスチェック、外部設定など、大規模プロジェクトに共通する一連の非ビジネス機能を提供します。 SpringBoot の概要は、コーディングをよりシンプルにし、構成をよりシンプルにし、デプロイをよりシンプルにし、モニタリングをよりシンプルにすることです。
主にどのような注釈で構成されていますか?スタートアップクラスのアノテーションは Spring Boot のコアアノテーションでもある @SpringBootApplication で、主な組み合わせとしては以下の 3 つのアノテーションが含まれます: @SpringBootConfiguration: @Configuration アノテーションを組み合わせて設定ファイルの機能を実装します。 @EnableAutoConfiguration: 自動構成機能をオンにするか、自動構成オプションをオフにします。例:
java データ ソース自動構成機能をオフにする場合: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
@ComponentScan: Spring コンポーネントのスキャン。 6. Spring Boot はどのロギング フレームワークをサポートしていますか?推奨されるデフォルトのロギング フレームワークは何ですか?
ファイルをコンソールまたはファイルに出力します。
7. SpringBoot Starter の動作原理
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 を実行するにはどのような方法がありますか? コマンドをパッケージ化するか、コンテナに入れて実行します
12. Spring Boot は実行しますか?独立したコンテナで実行する必要があるか?
14. SpringBoot でホット デプロイメントを実装する方法は何ですか?
Spring-boot -devtools
15. SpringBoot のものの使用
16. Async 非同期呼び出しメソッド
17. Spring Boot の起動時に特定のコードを実行するにはどうすればよいですか?
18. 設定を読み取るいくつかの方法は何ですか? Spring Boot で? どうですか?
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">
により、クラスの開始時に Spring Boot に対して @EnableAutoConfiguration アノテーション自動構成機能が有効になります。
この EnableAutoConfiguration を使用すると、次のことが行われます。
使用できる自動構成クラスを構成ファイル META_INF/Spring.factories からロードします
重複を削除し、exclude および excludeName 属性によって保持されるクラスを除外します
Filter 、条件を満たす自動構成クラスを返します (@Conditional)
1.プロパティ ファイル;
2.YAML ファイル;
3.システム環境変数;
4.コマンド ライン パラメーター;
etc.……
追加する場合に混乱が少なくなります。 YAML には階層的な構成データがあることがわかります。
23. YAML 構成の利点は何ですか?
整然とした構成。一部の特殊なシナリオでは、整然とした構成が重要です。
簡潔かつ明確で、配列もサポートしています。配列内の要素は基本的なデータ型またはオブジェクトにすることができます。
プロパティ構成ファイルと比較すると、YAML には次の特徴があります。もう 1 つの欠点は、
カスタマイズされた YAML 構成をインポートするための @PropertySource アノテーションがサポートされていないことです。
24. Spring Boot は XML 構成を使用できますか?
25. Spring Boot のコア構成ファイルとは何ですか? bootstrap.properties と application.properties の違いは何ですか?
application (.yml または .properties): ApplicationContext によってロードされ、Spring Boot プロジェクト
の自動構成に使用されます。
プロジェクト開発中、データベース接続
、redis 構成など、一部の構成ファイルは開発、テスト、運用環境などの環境によって異なる場合があります。では、異なる環境で構成を自動的に切り替えるにはどうすればよいでしょうか? Spring は、構成ファイルを前後に切り替える機能を提供する
profiles メカニズムを提供します。
Spring Profiles を使用すると、ユーザーは構成ファイル (dev、test、prod など) に基づいて Bean を登録できます。したがって、アプリケーション
が開発環境で実行されるときは、特定の Bean のみをロードできますが、本番環境では、特定の他の Bean をロードできます。
Swagger ドキュメントは QA 環境でのみ利用可能であり、他のすべてのドキュメントは無効になっているという要件があるとします。これは構成ファイルを使用して実行できます。 Spring Boot を使用すると、構成ファイルの操作が非常に簡単になります。
を使用してプロパティ構成ファイル内のプロパティを読み取ります。プロパティの設定、@MapperScan を使用して対応するマッパー パッケージに登録します
DataSourceConfig で設定されたトランザクション
2 つ目は、jta-atomikos を使用して分散トランザクション管理を実装することです
##29. Spring Boot アプリケーションを保護する方法は何ですか?
最新バージョンにアップグレードする
CSRF 保護を有効にする
コンテンツ セキュリティ ポリシーを使用して XSS 攻撃を防止する
30 Spring Boot アプリケーションにセキュリティを実装するにはどうすればよいですか?
31. 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 を構成する前に、
@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); } }
Spring Boot アクチュエーターは、Spring Startup フレームワークの重要な機能の 1 つです。 Spring Boot モニターは、運用環境で実行中のアプリケーションの現在のステータスにアクセスするのに役立ちます。実稼働環境では、チェックおよび監視する必要があるメトリックがいくつかあります。一部の外部アプリケーションでも、これらのサービスを使用して、関係者への警告メッセージをトリガーしている可能性があります。モニター モジュールは、ステータスをチェックするために HTTP URL として直接アクセスできる REST エンドポイントのセットを公開します
。
ControlerAdvice クラスを実装することで、コントローラー クラスによってスローされたすべての例外を処理します。
35.すべての Spring Boot マイクロサービスを監視するにはどうすればよいですか?
この状況に対処するために、にあるオープンソース プロジェクトを使用します。これは Spring Boot Actuator の上に構築されており、複数のアプリケーションのメトリクスを視覚化できる Web UI を提供します。
如果项目比较大,类比较多,不使用@SpringBootApplication,采用@Compoment指定扫包范
围
在项目启动时设置JVM初始内存和最大内存相同
将springboot内置服务器由tomcat设置为undertow
这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启
动。Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java 开
发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新
加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring
Boot 在发布它的第一个版本时没有这个功能。这是开发人员最需要的功能。DevTools 模块完全满
足开发人员的需求。该模块将在生产环境中被禁用。它还提供 H2 数据库控制台以更好地测试应用
程序。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
在微服务中,一个完整的项目被拆分成多个不相同的独立的服务,各个服务独立部署在不同的服务
器上,各自的 session 被从物理空间上隔离开了,但是经常,我们需要在不同微服务之间共享
session ,常见的方案就是 Spring Session + Redis 来实现 session 共享。将所有微服务的
session 统一保存在 Redis 上,当各个微服务对 session 有相关的读写操作时,都去操作 Redis 上
的 session 。这样就实现了 session 共享,Spring Session 基于 Spring 中的代理过滤器实现,使
得 session 的同步操作对开发人员而言是透明的,非常简便。
使用了下面的一些依赖项
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(如果自己开发过就可以说出来)
首先,这个 Starter 并非什么新的技术点,基本上还是基于 Spring 已有功能来实现的。首先它提
供了一个自动化配置类,一般命名为 XXXAutoConfiguration ,在这个配置类中通过条件注解来
决定一个配置是否生效(条件注解就是 Spring 中原本就有的),然后它还会提供一系列的默认配
置,也允许开发者根据实际情况自定义相关配置,然后通过类型安全的属性(spring.factories)注入
将这些配置属性注入进来,新注入的属性会代替掉默认属性。正因为如此,很多第三方框架,我们
只需要引入依赖就可以直接使用了。当然,开发者也可以自定义 Starter
在 Spring Boot 中使用定时任务主要有两种不同的方式,一个就是使用 Spring 中的 @Scheduled
注解,另一-个则是使用第三方框架 Quartz。
使用 Spring 中的 @Scheduled 的方式主要通过 @Scheduled 注解来实现。
我们都知道,新创建一个 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。
总结就是打包用的
进入项目目录在控制台输入mvn clean package,clean是清空已存在的项目包,package进行打
包或者点击左边选项栏中的Mavne,先点击clean在点击package
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 サイトの他の関連記事を参照してください。