Spring Bootシリーズ(1)---- SpringBootの詳細な紹介

SpringBootの紹介

  Spring Bootアプリケーション開発簡素化するためにSpring使用され、規則は構成よりも大きく、複雑なものは簡素化されています実行するだけで、独立した製品レベルのアプリケーションを作成できます
  春のファミリーバケット時代の到来により、SpringBootは私たちにもたらしているJ2EEのワンストップソリューション分散総合的なソリューションをそれ以降は、Springフレームワークに基づいてプロジェクト迅速に開発するため使用できます。すぐに使用できる依存関係が多数あるため、の構成にあまり注意を払わずにビジネスコードを開発するのに非常に便利です。フレームワークですが、ビジネスにのみです。それだけです。SpringCloudSpringBootSpringBootStarter

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に変更することを忘れないでください。つまりconfMavenがインストールされているフォルダーで開き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は自動的に構成するのに役立ちます。
  • @EnableAutoConfigurationSpringBootに自動構成機能をオンにするように指示します。自動構成を有効にするには、クリックして表示します。
@AutoConfigurationPackage
@Import({
    
    AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
    
    
  • @AutoConfigurationPackage:自動構成パッケージ。(クリックして表示)
  • @Import({Registrar.class})
    • pringの最下位の注釈@Import、コンポーネントをコンテナにインポートします。インポートされたコンポーネントはAutoConfigurationPackages.Registrar.class;によって作成されます。メイン構成クラス(@SpringBootApplicationでマークされたクラス)のパッケージ内のすべてのコンポーネントと、以下のすべてのサブパッケージをSpringコンテナーにスキャンします。

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の導入は終わりです。

おすすめ

転載: blog.csdn.net/weixin_43844418/article/details/113923837