banner
jzman

jzman

Coding、思考、自觉。
github

Spring Bootシリーズのインターフェースを開発する

PS:いつ始めることに決めても遅くはありません。

Spring Boot は Spring アプリケーションの開発を簡素化するために使用され、不要な設定プロセスを減らすことができます。主な特徴には、Spring Boot Starter、自動設定、コマンドラインインターフェース、Actuator などがあります。Android 開発者として Spring Boot を学ぶ際は、使用方法を中心に学びます。すべての文章は対応するケースに基づいており、本記事では Spring Boot を使用してインターフェースを開発する方法を以下のいくつかの側面から紹介します。

  1. Spring Boot プロジェクトの初期化
  2. IDEA を使用して Spring Boot プロジェクトを作成
  3. Spring Boot プロジェクトのディレクトリ構造
  4. POM ファイルの概要
  5. 簡単なインターフェースの実装
  6. インターフェーステスト

Spring Boot プロジェクトの初期化#

Spring アプリケーションの作成はすべて Spring Initializr から始まります。プロジェクトの依存関係を迅速に選択でき、Spring アプリケーションの作成を完了するには https://start.spring.io/ にアクセスします。以下の図のようになります。

0

設定を通じて対応する設定情報のプロジェクトソースコードパッケージを生成でき、IntelliJ IDEA や他の IDE で開くことができます。

IDEA を使用して Spring Boot プロジェクトを作成#

最も一般的な方法は、IDE を使用して Spring 関連のプロジェクトを作成することです。ここでは IntelliJ IDEA を選択して Spring Boot プロジェクトを作成します。

第一歩:File->New->Project を選択します。以下のようになります:

image

第二歩:Spring Initializr を選択し、Project SDK は少なくとも JDK 1.8 で、次に Next を選択します:

image

第三歩:プロジェクトの設定に基づいてプロジェクト情報を入力し、次に Next を選択します:

image

第四歩:Web->Spring Web および Spring Boot のバージョンを選択します。このステップでは、実際にはこのプロジェクトに Web 開発をサポートする依存関係を追加しています。その後、pom ファイルで関連する依存関係を見ることができ、次に Next を選択します:

image

第五歩:Finish を選択してプロジェクトの作成を完了します:

image

Spring Boot プロジェクトのディレクトリ構造#

Spring Boot プロジェクトの主なディレクトリ構造は以下の通りです:

│ pom.xml
└─src
    ├─main
    │  ├─java
    │  │  └─com
    │  │      └─manu
    │  │          └─hello
    │  │                  SpringBootHelloWorldApplication.java
    │  │
    │  └─resources
    │      │ application.properties
    │      │
    │      ├─static
    │      └─templates
    └─test
        └─java
            └─com
                └─manu
                    └─hello
                            SpringBootHelloWorldApplicationTests.java

主なディレクトリとファイルの説明は以下の通りです:

  • pom.xml:プロジェクトは maven の依存関係設定ファイルに基づいています。プロジェクトが gradle に基づいている場合は、対応する gradle ファイルがあります。
  • src/main/java:プロジェクトのソースコードディレクトリ。
  • src/main/resources:リソースファイルディレクトリ。
  • src/test:テストファイルディレクトリ。
  • application.properties:設定ファイルで、yml ファイルを使用して設定することもできます。
  • static:静的リソースファイルディレクトリ(html、css、js など)。
  • templates:テンプレートファイルディレクトリ(Thymeleaf など)。
  • SpringBootHelloWorldApplication:プロジェクトの起動クラス。

POM ファイルの概要#

POM はプロジェクトオブジェクトモデル(Project Object Model)の略で、maven プロジェクトは xml を使用してプロジェクトを設定します。pom.xml は maven プロジェクトの設定に使用され、pom.xml ファイルは Android 開発の build.gradle ファイルに似ています。もちろん、Spring Boot プロジェクトも gradle を使用して構築できます。主にプロジェクトの依存関係を管理し、プロジェクト情報を設定するために使用されます。Spring Web プロジェクトの pom ファイルの内容を見てみましょう:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!--pomモデルバージョン -->
    <modelVersion>4.0.0</modelVersion>
    <!--継承する親プロジェクト-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath /> <!-- リポジトリから親を検索 -->
    </parent>

    <!--プロジェクト情報-->
    <groupId>com.manu</groupId>
    <artifactId>spring-boot-hello-world</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <!--プロジェクトが生成するアーティファクトのタイプ、デフォルトはjar、他にwar、rar、ejb、ear、parなど-->
    <packaging>jar</packaging>
    <name>spring-boot-hello-world</name>
    <description>Spring Boot sample for Hello World!</description>

    <!--プロパティ設定-->
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <!--依存関係-->
    <dependencies>
        <!--Webをサポート-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!--ビルド-->
    <build>
        <!--プラグイン-->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

pom ファイルの他の具体的な設定についてはここでは詳しく説明しません。

簡単なインターフェースの実装#

上記の手順に従ってプロジェクトが作成されました。プロジェクトの起動クラスは以下の通りです:

@EnableAutoConfiguration
@ComponentScan
@Configuration
//@SpringBootApplication
public class SpringBootHelloWorldApplication {
    public static void main(String[] args) {
        // プログラムを起動します。Springコンテナ、内蔵のTomcatなどを含みます。
        SpringApplication.run(SpringBootHelloWorldApplication.class, args);
    }
}

ここで @SpringBootApplication@EnableAutoConfiguration@ComponentScan、および @Configuration を一緒に使用することに相当し、主に起動クラスの設定に使用されます。ここではこの基盤の上に簡単なインターフェースを実装します。まず、返されるエンティティクラスとして MessageBean を作成します。以下の通りです:

/**
 * @Desc: MessageBean
 * @Author: jzman
 * @Date: 2020/3/6 15:51.
 */
public class MessageBean {
    private long id;
    private String author;
    private String message;

    public MessageBean(long id, String author, String info) {
        this.id = id;
        this.author = author;
        this.message = info;
    }
    // ...
}

次に、対応するコントローラークラスを作成します。ここでの注釈 @RestController はクラス HelloWorldController をコントローラーとしてマークし、そのクラス内のメソッドの戻り値はページビューではなくオブジェクトに変換されます。これは @Controller@ResponseBody を一緒に使用するのと同じ効果です。

返される MessageBeanjson に変換されます。このプロセスは Spring の HTTP メッセージコンバーターによって自動的にサポートされ、最終的に MappingJackson2HttpMessageConverterMessageBean オブジェクトを対応する json 形式に変換します。

/**
 * @Desc: HelloWorldController
 * @Author: jzman
 */
//@Controller
//@ResponseBody
@RestController
public class HelloWorldController {

    private final AtomicLong counter = new AtomicLong();

//    @RequestMapping(value = "/message", method = RequestMethod.GET)
    @GetMapping("/message")
    public MessageBean message(@RequestParam(name = "author", defaultValue = "jzman") String author,
                               @RequestParam(name = "message", defaultValue = "Hello world!") String message) {
        return new MessageBean(counter.incrementAndGet(), author, message);
    }
}

@RestController@Controller@ResponseBody を一緒に使用した効果を持ち、Controller 内で返されるオブジェクトを対応する形式に変換します。

@Controller はクラスの注入操作を担当します。ここでは深入りしませんが、Android 開発の Dagger フレームワークを使用したことがあると、@Controller の使用を理解するのに役立ちます。@ResponseBody は主に返されるオブジェクトを特定の形式に変換することを示します。デフォルトは json 形式です。

@RequestMapping はアドレスマッピングに使用され、クラスとメソッドの両方で使用できます。クラスで使用すると、そのクラス内のすべてのリクエストに応答するメソッドはこれを親パスとして持ちます。メソッドで使用すると、現在の応答パスを示します。上記のコードでは GET リクエストを実装するために @RequestMapping を使用することも、@GetMapping を使用することもできます。@GetMapping は実際にはリクエストメソッドを RequestMethod.GET にデフォルトで指定しています。また、@RequestParam はリクエストパラメータを設定するために使用されます。

インターフェーステスト#

SpringBootHelloWorldApplication を実行し、成功したスクリーンショットは以下の通りです:

image

以下のインターフェースにアクセスして返されるデータを確認します:

http://localhost:8080/message?author=jzman&message=Hello

返されるデータは以下の通りです:

{"id":3,"author":"jzman","message":"Hello"}

これで、Spring Boot を使用して簡単なインターフェースを実現しました。インターフェースの設定方法は Android 開発の Retrofit に似ており、注釈を使用して簡単に関連設定を完了できます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。