1.概要

このクイックチュートリアルでは、Spring Bootを使って簡単なコンソールベースのアプリケーションを作成する方法を探ります。

2. Mavenの依存関係

私たちのプロジェクトは、スプリングブートの親に依存しています。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
</parent>

必要な初期依存関係は次のとおりです。

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

3.コンソールアプリケーション

私たちのコンソールアプリケーションは単一のクラスで構成されています。

自動設定を有効にするために、メインクラスに

Springの

@ SpringBootApplication

アノテーション

を使用しています。

このクラスは

Springの

CommandLineRunner

インターフェース

も実装しています。

CommandLineRunner

は、

run

メソッドを持つ単純なSpring Bootインタフェースです。アプリケーションコンテキストがロードされた後、Spring Bootはこのインタフェースを実装するすべてのBeanの

run

メソッドを自動的に呼び出します。

これが私たちのコンソールアプリケーションです。

@SpringBootApplication
public class SpringBootConsoleApplication
  implements CommandLineRunner {

    private static Logger LOG = LoggerFactory
      .getLogger(SpringBootConsoleApplication.class);

    public static void main(String[]args) {
        LOG.info("STARTING THE APPLICATION");
        SpringApplication.run(SpringBootConsoleApplication.class, args);
        LOG.info("APPLICATION FINISHED");
    }

    @Override
    public void run(String... args) {
        LOG.info("EXECUTING : command line runner");

        for (int i = 0; i < args.length; ++i) {
            LOG.info("args[{}]: {}", i, args[i]);
        }
    }
}


spring.main.web-application-type = NONE


Springプロパティ

も指定する必要があります。このプロパティは、これがWebアプリケーションではないことをSpringに明示的に通知します。


SpringBootConsoleApplication

を実行すると、次のログが記録されているのがわかります。

00:48:51.888[main]INFO  c.b.s.SpringBootConsoleApplication - STARTING THE APPLICATION
00:48:52.752[main]INFO  c.b.s.SpringBootConsoleApplication - No active profile set, falling back to default profiles: default
00:48:52.851[main]INFO  o.s.c.a.AnnotationConfigApplicationContext
  - Refreshing org.spring[email protected]6497b078: startup date[Sat Jun 16 00:48:52 IST 2018]; root of context hierarchy
00:48:53.832[main]INFO  o.s.j.e.a.AnnotationMBeanExporter - Registering beans for JMX exposure on startup
00:48:53.854[main]INFO  c.b.s.SpringBootConsoleApplication - EXECUTING : command line runner
00:48:53.854[main]INFO  c.b.s.SpringBootConsoleApplication - args[0]: Hello World!
00:48:53.860[main]INFO  c.b.s.SpringBootConsoleApplication - Started SpringBootConsoleApplication in 1.633 seconds (JVM running for 2.373)
00:48:53.860[main]INFO  c.b.s.SpringBootConsoleApplication - APPLICATION FINISHED
00:48:53.868[Thread-2]INFO  o.s.c.a.AnnotationConfigApplicationContext
  - Closing org.spring[email protected]6497b078: startup date[Sat Jun 16 00:48:52 IST 2018]; root of context hierarchy
00:48:53.870[Thread-2]INFO  o.s.j.e.a.AnnotationMBeanExporter - Unregistering JMX-exposed beans on shutdown


run

メソッドは、アプリケーションコンテキストがロードされた後、

main

メソッドの実行が完了する前に呼び出されることに注意してください。

ほとんどのコンソールアプリケーションは

CommandLineRunner

を実装する単一のクラスのみを持ちます。アプリケーションに

CommandLineRunner

を実装するクラスが複数ある場合は、

Springの

@ Order

アノテーション

を使用して実行順序を指定できます。

4.まとめ

この記事では、Spring Bootを使って簡単なコンソールベースのアプリケーションを作成する方法をまとめました。

ここにある私たちの例の完全なソースコードは、いつものように、https://github.com/eugenp/tutorials/tree/master/spring-boot-ops[over on GitHub]です。