@SpringBootApplicationの使い方と引数を徹底解説!【初心者向け】

@SpringBootApplicationとは?

@SpringBootApplicationとは、Spring Bootアプリケーションの起動クラスに付けるアノテーションで、「Spring Bootアプリケーションを構成するための設定」を自動的に行う重要な役割を持ちます。このアノテーションを使用することで、Springの設定を簡単に管理できるようになり、複雑な構成が不要になります。

内部に含まれている3つのアノテーション

@SpringBootApplicationは、実際には以下の3つのアノテーションの役割を統合しています。

  1. @Configuration – このクラスが設定クラスであることを示します。
  2. @EnableAutoConfiguration – 自動的にSpringの設定を行います。データベースやJPAなど、必要な設定をSpringが自動で行ってくれるため、設定ファイルを書く手間が減ります。
  3. @ComponentScan – 指定されたパッケージ内のコンポーネントやBeanを自動的にスキャンし、Springのコンテナに登録します。

これにより、Spring Bootアプリケーションの構築がシンプルかつ直感的になります。


基本的な使い方

1. メインクラスに@SprigBootApplicationをつける

まず、Spring Bootアプリケーションのメインクラスに@SpringBootApplicationを付けてみましょう。このメインクラスは、通常、src/main/javaフォルダに配置されます。

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

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

このコードは、MyApplicationクラスをSpring Bootアプリケーションのエントリーポイントとして設定しています。SpringApplication.run()メソッドを呼び出すことで、Spring Bootがアプリケーションを起動します。

2. 自動構成とBeanスキャン

@SpringBootApplicationを使うと、@ComponentScanにより自動的に@Controller@Serviceといったアノテーションの付いたクラスがスキャンされ、Springのコンテナに登録されます。これにより、手動で設定しなくても、アプリケーション全体で依存性の注入が行われます。


@SpringBootApplicationの便利な使い方【応用編】

1. 自動構成を一部無効化する

自動構成が便利な反面、場合によっては特定の構成を無効化したいこともあります。例えば、DataSourceの自動構成を無効化する場合は、exclude属性を使用します。

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

このように、@SpringBootApplicationexclude属性を指定すると、特定の自動構成を除外することができます。

2. カスタム設定でのBean登録

@SpringBootApplication@Beanアノテーションを組み合わせて、カスタム設定を持つBeanを登録することも可能です。

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

    @Bean
    public MyService myService() {
        return new MyService();
    }
}

このコードでは、MyServiceクラスのインスタンスをBeanとして登録しています。これにより、他のクラスから@AutowiredMyServiceを使用できるようになります。


@SpringBootApplicationの引数と設定オプション

@SpringBootApplicationにはさまざまな引数を指定することができ、アプリケーションの起動時にカスタマイズを加えられます。

1. scanBasePackages

デフォルトでは、@SpringBootApplicationが配置されているパッケージとそのサブパッケージのみがスキャンされますが、scanBasePackagesを指定することで、任意のパッケージをスキャン対象にすることができます。

@SpringBootApplication(scanBasePackages = {"com.example.service", "com.example.repository"})
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

2. SpringApplicationのカスタマイズ

SpringApplicationには、アプリケーションの挙動を変更するためのメソッドもいくつか用意されています。たとえば、バナーの表示を無効にする設定などができます。

public static void main(String[] args) {
    SpringApplication app = new SpringApplication(MyApplication.class);
    app.setBannerMode(Banner.Mode.OFF);
    app.run(args);
}

この例では、アプリケーション起動時のSpringのバナーを非表示にしています。


他のアノテーションと組み合わせた高度な使い方

1. @Profileで環境ごとの設定を切り替える

@SpringBootApplication@Profileアノテーションを組み合わせると、開発環境や本番環境ごとに異なる設定を持たせることができます。

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

    @Bean
    @Profile("dev")
    public MyService devService() {
        return new DevService();
    }

    @Bean
    @Profile("prod")
    public MyService prodService() {
        return new ProdService();
    }
}

この例では、devプロファイルのときはDevServiceが、prodプロファイルのときはProdServiceが使用されます。プロファイルは、application.propertiesで設定できます。


おわりに

@SpringBootApplicationを理解することで、Spring Bootアプリケーションの設定と構成が一層シンプルになります。今回紹介した基本的な使い方と応用例を実際に試し、さらに理解を深めてみてください。Spring Bootの公式ドキュメントも参考にすると、より多くの機能を活用できるようになるでしょう。

もっと詳しく知りたい方は、Spring公式ドキュメントを見てみてくださいね。

他の記事が見たい方はこちら!↓↓↓

タイトルとURLをコピーしました