記事のディレクトリ
SpringBootの紹介
Spring Boot
アプリケーション開発を簡素化するためにSpring
使用され、規則は構成よりも大きく、複雑なものは簡素化されています。実行するだけで、独立した製品レベルのアプリケーションを作成できます。
春のファミリーバケット時代の到来により、SpringBoo
tは私たちにもたらしているJ2EEのワンストップソリューションと分散総合的なソリューションを。それ以降は、Springフレームワークに基づいてプロジェクトを迅速に開発するために使用できます。すぐに使用できる依存関係が多数あるため、の構成にあまり注意を払わずにビジネスコードを開発するのに非常に便利です。フレームワークですが、ビジネスにのみです。それだけです。SpringCloud
SpringBoot
SpringBoot
Starter
SpringBootの利点
- スタンドアロンのSpringプロジェクトをすばやく作成し、主流のフレームワークと統合します
- 組み込みサーブレットコンテナを使用すると、アプリケーションをWARパッケージとしてマークする必要はありません。
- スターターの自動依存関係とバージョン管理
- 開発を簡素化するための多数の自動構成。デフォルト値を変更することもできます
- XMLを構成する必要はなく、コードを生成する必要もありません。
- 準実稼働環境でのランタイムアプリケーションの監視
- クラウドコンピューティングとの自然な統合
マイクロサービス
と言えばSpringBoot
、サービスはマイクロに言及する必要があります、マイクロサービスは建築様式です、それは小さなサービスとして理解することができます、これらのサービスはHTTP
交換によるものです。各機能要素は、最終的には個別に交換およびアップグレードできるソフトウェアユニットです。マイクロサービスの正式な定義はありません。マイクロサービスを直接説明することは困難です。従来のWEBアプリケーションを比較することで、マイクロサービスとは何かを理解できます。従来のアプリケーションは、 「シングルアプリケーション」:オールインワン。詳細については、マイクロサービスのドキュメントを参照してください
モノリシックアプリケーションはそのようなものであり、コアはビジネスロジック、アダプター、およびUIを介してアクセスされるAPIまたはWEBインターフェイスに分割されます。ビジネスロジックは、ビジネスプロセス、ビジネスルール、およびドメインエンティティを定義します。アダプタには、データベースアクセスコンポーネント、メッセージコンポーネント、およびアクセスインターフェイスが含まれます。これらはすべて統合されており、非常に強力に見えますが、実際には非常に面倒です。
マイクロサービスアーキテクチャには多くの重要な利点があり、複雑さの問題を解決します。単一のアプリケーションを一連のサービスに分解します。機能の総量は同じままですが、アプリケーションは管理可能なモジュールまたはサービスに分割されています。これらのサービスは、明確なRPCまたはメッセージ駆動型APIの境界を定義します。マイクロサービスアーキテクチャは、アプリケーションのモジュール性のレベルを強化します。これは、モノリシックコードベースでは実現が困難です。したがって、マイクロサービスの開発ははるかに高速で、理解と保守が容易です。
HelloWordアプリケーションを実装する
次に、最初に単純なアプリケーションから始め、次にこの単純なアプリケーションに基づいたSpringBootの構成と使用法について説明します。
環境の説明
- JDK1.8
- SpringBoot1.7より上では、SpringBoot2.4.3を使用しています。
- Maven3.3より上:ここでは3.6.3を使用しています
- IDEで使用されるアイデア
Mavenをインストールした後、MavenのデフォルトのJDKを1.8に変更することを忘れないでください。つまりconf
、Mavenがインストールされているフォルダーで開きsetting.xml
、次の構成に変更します。
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
機能を実現する
関数、ブラウザはhelloリクエストを送信し、サーバーはリクエストを受け入れて処理し、HelloWorld文字列に応答します
特定の手順
- Mavenプロジェクトを作成する
- SpringBootに関連する依存関係をインポートする
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- 这个插件,可以将应用打包成一个可执行的jar包;-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- メインプログラムを作成し、SpringBootアプリケーションを起動します
/**
* @Author: zhang
* @Descripetion: @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
**/
@SpringBootApplication
@RestController
public class HelloWorldApplication {
public static void main(String[] args) {
// Spring应用启动起来
SpringApplication.run(HelloWorldApplication.class,args);
}
- 関連するコントローラー、サービスの作成
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "helloWorld";
}
}
コードを記述したら、直接実行します。正しく聞こえました。何もする必要はありません。直接実行するだけです。実行後、ブラウザから直接アクセスして、成功を収めることができます。
SpringBootは展開を簡素化します
作成から操作までとても便利でシンプルです。コードの分析と説明に進む前に、パッケージのデプロイについて詳しく説明したいと思います。このとき、質問があります。作成したばかりのとき、Tomcatなどがインストールおよび構成されておらず、warパッケージが開かれていないようです。なぜ実行されたのですか?デプロイメントは言うまでもありません。SpringBootプロジェクトをjarパッケージに入力すると、オペレーティング環境をインストールせずにjarパッケージを直接実行でき、プログラムを起動できます。移植性は非常に強力です。Mavenコマンドを使用してパッケージ化するか、Ideaを直接使用してパッケージ化できます。Mavenコマンドはオンラインで直接検索できます。ここでは、Ideaを使用してパッケージ化するのが便利であることを示します。具体的な操作は次のとおりです。Ideaには次のようなものがあります。サイドバーMaven Projects
をクリックして開き、クリックしてpackage
実行してパッケージ化します。
次の図に示すように、ログで操作の終了を待ちます。
パッケージ化されたjarパッケージをデスクトップに貼り付け、コマンドラインを開いて、コマンドを実行して実行します。
操作が成功すると、次のようになります。ブラウザから直接アクセスできます。
Hello World Exploration
POMファイル
親プロジェクト
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath/>
</parent>
彼の親プロジェクトは次のとおりです。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.4.3</version>
</parent>
彼は実際にSpring Boot
アプリケーション内のすべての依存関係バージョンを管理するようになります;
Spring Boot
バージョンアービトレーションセンター;将来的には、バージョンを書き込まずにデフォルトで依存関係をインポートします;(そこでdependencies
管理されない依存関係は当然バージョン番号を宣言する必要があります)
ランチャー
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-web:
spring-boot-starter
:Spring-bootシーンスターター;通常の操作でWebモジュールが依存するコンポーネントをインポートするのに役立ちました。
Spring Bootは、すべての機能シナリオを抽出し、それらを1つずつ作成しますstarters
(スターター)。これらのスターター関連シナリオのすべての依存関係をプロジェクトにインポートする必要があります。使用する機能のシーンのランチャーをインポートします。詳細については、公式文書にアクセスできます
メインプログラムクラス、メインエントリークラス
@SpringBootApplication
@RestController
public class HelloWorldApplication {
public static void main(String[] args) {
// Spring应用启动起来
SpringApplication.run(HelloWorldApplication.class,args);
}
@SpringBootApplication:
特定のクラスのSpringBootアプリケーションのマーキングは、このクラスがSpringBootのメイン構成クラスであることを示しており、SpringBootはこのクラスのmainメソッドを実行してSpringBootアプリケーションを起動する必要があります。
このコメントをクリックしてご覧ください。「按住Ctrl+左键
」
@Target({
ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {
@Filter(
type = FilterType.CUSTOM,
classes = {
TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {
AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
@SpringBootConfiguration:
SpringBootの構成クラス;
-
特定のクラスでマークされている場合、これはSpringBoot構成クラスであることを意味します。
-
この@SpringBootConfigurationクラスをクリックし続けます。
@Configuratio
:構成クラスでこのアノテーションをマークします。- 構成クラス-----構成ファイル;構成クラスもコンテナー内のコンポーネントです;
@Component
@EnableAutoConfiguration:
自動設定機能をオンにします;
- 以前に構成する必要があるものとして、SpringBootは自動的に構成するのに役立ちます。
@EnableAutoConfiguration
SpringBootに自動構成機能をオンにするように指示します。自動構成を有効にするには、クリックして表示します。
@AutoConfigurationPackage
@Import({
AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
@AutoConfigurationPackage
:自動構成パッケージ。(クリックして表示)@Import({Registrar.class})
- pringの最下位の注釈
@Import
、コンポーネントをコンテナにインポートします。インポートされたコンポーネントはAutoConfigurationPackages.Registrar.class
;によって作成されます。メイン構成クラス(@SpringBootApplicationでマークされたクラス)のパッケージ内のすべてのコンポーネントと、以下のすべてのサブパッケージをSpringコンテナーにスキャンします。
- pringの最下位の注釈
AutoConfigurationImportSelector
コンポーネントをコンテナにインポートします;
AutoConfigurationImportSelector
:インポートするコンポーネントのセレクタ;インポートする必要のあるすべてのコンポーネントを完全なクラス名の形式で返します;これらのコンポーネントはコンテナに追加されます;多くの自動構成クラスがコンテナにインポートされます(xxxAutoConfiguration
);このシーンに必要なすべてのコンポーネントをコンテナにインポートし、これらのコンポーネントを構成します。
このクラスをクリックした後、次のメソッドを見つけて、デバッグを中断します。コンソールには多くのコンポーネントが表示され
ます。自動構成クラスを使用すると、構成インジェクション機能コンポーネントなどを手動で作成する必要がありません。
Spring BootMETA-INF/spring.factories
は、起動時にクラスパスからEnableAutoConfiguration
指定された値を取得し、これらの値を自動構成クラスとしてコンテナーにインポートします。自動構成クラスが有効になり、自動構成作業を支援します。
以前は自分で構成する必要がありましたが、現在は自動構成クラスが役立ちます。J2EEの全体的な統合ソリューションと自動構成がすべて利用可能ですspring-boot-autoconfigure-1.5.9.RELEASE.jar
。
これでhelloworldプログラムの分析は終了です。SpringBootプロジェクトをすばやく作成する方法を見てみましょう。
SpringBootプロジェクトをすばやく作成する
プロジェクトを作成する前に、最初にMavenプロジェクトを作成し、次に関連するSpringboot依存関係をインポートしましたが、実際には、Ideaを使用してアイデア内のプロジェクトを作成し、関連する依存関係が必要なSpringbootプロジェクトを自動的に作成することができます。
アイデア:SpringInitializerを使用してプロジェクトをすばやく作成する
このようにして、スプリングブーツのクイック作成が完了します。pom.xmlファイルにアクセスして確認できます。内容は自動的に修正されています。
ここで説明したいのは、アイデアによって作成されたプロジェクトのリソースの下で、3つのものが自動的に作成されるということです。ここで説明します。
static
:すべての静的リソースを保存しますjs css images
;;templates
:すべてのテンプレートページを保存します;(Spring Bootのデフォルトのjarパッケージは埋め込みTomcatを使用し、JSPページはデフォルトではサポートされていません);テンプレートエンジン(freemarker、thymeleaf
)を使用できます;application.properties
:SpringBootアプリケーションの構成ファイル。一部のデフォルト設定は変更できます。
これで、springbootの導入は終わりです。