SpringBoot研究ノート-01SpringBootプロジェクトの予備研究

SpringBootは、Springをベースにした非常に高速な開発フレームワークであり、必要な構成は少量です。最初の使用:

0.新しいSpringBootプロジェクトを作成します

最初の学習時に依存関係を自動的に追加する必要はありません。依存関係を手動で追加することを選択します。

[注]:1。公式ウェブサイトのリンクが遅すぎる場合は、AlibabaCloudからプロジェクトスケルトンをダウンロードすることもできます。

[注] 2:空のMavenプロジェクトを直接作成して、不足しているものをコピーすることもできます。

[注] 3:SpringBootスケルトンを初めてビルドした後、pom.xmlファイルが無効になる場合があります。この時点で、pomをMavenプロジェクトに追加する必要があります。

1.pom.xmlファイルでファイルフィルタリングを構成します

        <!--配置资源过滤-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <!--记住一定要配置SpringBoot主配置文件的包含-->
                    <include>**/*.properties</include>
                    <!--要使用自定义的banner需要包含txt-->
                    <include>**/*.txt</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>

2.SpringBoot-メイン

1. run()メソッドの戻り値(実行が実行されると、プロジェクトの種類に応じて起動シーンが選択されます)

プロジェクトがビルドされた後、クラスが生成されます。

package com.zzt;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

これは、SpringBootのスターターであり、SpringBootの起動に使用されるSpringBootの構成クラス(@SpringBootApplicationアノテーション)です。実際、SpringApplication.run(DemoApplication.class、args)は、SpringIoCコンテナーであるコンテナーを返します。

実験をしてみましょう。Serviceパッケージの下に新しいクラスを作成し、@ Serviceアノテーションを追加します。mianメソッドでコンテナgetBeanを使用します。

package com.zzt.service;

import org.springframework.stereotype.Service;

@Service
public class StudentService {
}
    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(DemoApplication.class, args);
        StudentService bean = ctx.getBean(StudentService.class);
        System.out.println(bean);
    }

ご覧のとおり、StudentServiceは自動的に強化されてコンテナーに配置されます。これにより、run()メソッドがSpringIoCコンテナーを返すと言ったことが確認されます。

2.メインメソッドの事前設定

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(DemoApplication.class);
        app.setBannerMode(Banner.Mode.CONSOLE); //在控制台打印输出启动logo  默认开启
        ApplicationContext ctx = app.run();
        StudentService bean = ctx.getBean(StudentService.class);
        System.out.println(bean);
    }

SpringApplicationオブジェクトを使用すると、多くの事前構成を行うことができます。たとえば、ロゴを開始するには、リソースパスresourcesの下に新しいbanner.txtを作成し、必要なロゴを入力するだけです。

もちろん、コードを使用せずに構成ファイルで構成できます。

3.メインメソッドビルダーの使用

    public static void main(String[] args) {
        ApplicationContext ctx = new SpringApplicationBuilder().sources(DemoApplication.class).
                bannerMode(Banner.Mode.CONSOLE)
                .run();
        StudentService bean = ctx.getBean(StudentService.class);
        System.out.println(bean);
    }

[注]:SpringBootプロジェクトの開始は、基本的にSpringIoCコンテナーの作成であることを理解する必要があります。

4.CommandLineRunnerインターフェース

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {

    public static void main(String[] args) {
        ApplicationContext ctx = new SpringApplicationBuilder().sources(DemoApplication.class).
                bannerMode(Banner.Mode.CONSOLE)
                .run();
        StudentService bean = ctx.getBean(StudentService.class);
        System.out.println(bean);
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println("Spring容器构建完成......");
    }
}

CommandLineRunnerインターフェースは、Spring IoCコンテナーが完了した後にコールバックするrunメソッドを定義します(同時にオブジェクトをインスタンス化し、コンテナーに配置します)。

[注]:1。競合を回避するために、構成クラスまたは構成ファイルで個別に構成することをお勧めします(ただし、現在のテストは競合の構成ファイルに基づいているようです)。

          2. mainメソッドを含む構成クラスもBeanであるため、注入できます。

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {

    @Autowired
    private StudentService studentService;

    public static void main(String[] args) {
        ApplicationContext ctx = new SpringApplicationBuilder().sources(DemoApplication.class).
                bannerMode(Banner.Mode.CONSOLE)
                .run();
        StudentService bean = ctx.getBean(StudentService.class);
        System.out.println(bean);
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println("Spring容器构建完成......" + studentService);
    }
}

3.プロジェクトの構造

    <!--继承父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

継承された親プロジェクトでは、多くのjarパッケージバージョンが定義されているため、依存関係を導入すると、<version>を手動で追加する代わりに、親プロジェクトで定義されたバージョンに従って依存関係を追加します。

4.ランチャー

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

ランチャーを使用してインポートします。対応するシーンに必要なすべての依存関係を自動的にインポートするのに役立ちます。これがWeb環境の依存関係です。SpringBootは、すべての機能シナリオをスターターに変えます。

5.SpringBoot自動構成原理の簡単な分析

SpringBootのすべての自動構成は、起動時に構成ファイルをスキャンしてロードします:spring.factories、これにはすべての自動構成クラスが含まれますが、すべてがロードされるわけではありません。構成クラスには@ConditionalXXXの注釈が付けられ、でのみロードされることを示します。条件が満たされた場合のみ。

@ConditionalOnClassは、このクラスを所有している場合にのみ有効になることを意味します。

 

 

 

おすすめ

転載: blog.csdn.net/qq_39304630/article/details/113064097