0Pricing
Java Academy · レッスン

自動構成とSpring Bootスターター

クラスパス上の依存関係と条件アノテーションに基づいて、Spring BootがBeanを自動構成する仕組みを理解します。

「自動構成とSpring Bootスターター」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。

Spring Bootの自動構成とは

自動構成は、クラスパスと環境に存在するものに基づいてSpring beanを自動的に構成します。一般的な統合で必要となる手動の@Bean設定をなくせます。

@SpringBootApplicationアノテーション

@SpringBootApplicationは、@Configuration、@EnableAutoConfiguration、@ComponentScanを組み合わせたアノテーションです。自動構成とコンポーネントスキャンを有効にします。

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

自動構成の仕組み

Spring Bootは、META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports(Spring Boot 3)をスキャンして、自動構成クラスの一覧を取得します。各クラスは条件付きで適用されます。

// Spring Boot 3 imports file:
// org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
// org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration

@ConditionalOnClassと@ConditionalOnMissingBean

自動構成クラスは@Conditionalアノテーションを使用し、特定の条件を満たす場合にだけ適用されます。たとえば、クラスパスにクラスが存在する場合や、beanがまだ定義されていない場合です。

@AutoConfiguration
@ConditionalOnClass(DataSource.class)
@ConditionalOnMissingBean(DataSource.class)
public class DataSourceAutoConfiguration {
    @Bean
    public DataSource dataSource(DataSourceProperties props) {
        return DataSourceBuilder.create().build();
    }
}

Spring Boot Starter

Starterは、厳選された依存関係記述子のセットです。プロジェクトにspring-boot-starter-webを追加すると、Spring MVC、Tomcat、Jacksonと、それらの自動構成が取り込まれるため、依存関係を手作業で探す必要がありません。

// build.gradle:
dependencies {
    implementation "org.springframework.boot:spring-boot-starter-web"
    implementation "org.springframework.boot:spring-boot-starter-data-jpa"
    implementation "org.springframework.boot:spring-boot-starter-validation"
}

よく使うStarter

主なStarterは次のとおりです。starter-web(REST + Tomcat)、starter-data-jpa(JPA + Hibernate)、starter-security、starter-test(JUnit + Mockito)、starter-actuator(ヘルスチェック/メトリクス)。

自動構成を上書きする

同じ型の独自@Beanを定義すると、自動構成されたbeanより優先されます。@ConditionalOnMissingBeanにより、独自のbeanが存在しない場合にだけ自動構成されたbeanが作成されます。

// Override auto-configured ObjectMapper:
@Configuration
public class JacksonConfig {
    @Bean
    public ObjectMapper objectMapper() {
        return new ObjectMapper()
            .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
            .registerModule(new JavaTimeModule());
    }
}

自動構成を除外する

不要な特定の自動構成クラスを除外できます。Starterによって追加された機能を手動で構成したい場合に便利です。

@SpringBootApplication(exclude = {
    DataSourceAutoConfiguration.class,
    SecurityAutoConfiguration.class
})
public class MyApp { ... }

独自のStarterを作成する

自動構成クラスを含むStarterモジュールを作成し、META-INF/spring/....AutoConfiguration.importsに登録します。独自のStarterを含めた他のプロジェクトでは、beanが自動的に利用できるようになります。

// my-starter/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports:
// com.example.MyLibraryAutoConfiguration

自動構成をデバッグする

--debugフラグを付けて実行するか、logging.level.org.springframework.boot.autoconfigure=DEBUGを設定すると、「CONDITIONS EVALUATION REPORT」が表示され、どの自動構成が適用または除外されたのか、その理由を確認できます。

java -jar myapp.jar --debug
# Or in application.properties:
# logging.level.org.springframework.boot.autoconfigure=DEBUG

Actuator /conditionsエンドポイント

spring-boot-starter-actuatorを有効にし、/actuator/conditionsエンドポイントを公開すると、再起動せずに実行時の自動構成評価レポートを確認できます。

# application.properties:
management.endpoints.web.exposure.include=conditions
# Then:
curl http://localhost:8080/actuator/conditions

確認問題

その型のbeanがまだ定義されていない場合にだけbeanを作成するアノテーションは何ですか。

振り返り

自動構成は条件付きアノテーションを使用し、クラスパスと既存のbeanに基づいてbeanを構成します。Starterは依存関係と自動構成をまとめて提供します。独自のbeanで上書きし、不要な構成は除外してください。--debugでデバッグできます。

よくある質問

「自動構成とSpring Bootスターター」レッスンは無料ですか?

はい。「自動構成とSpring Bootスターター」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。

「自動構成とSpring Bootスターター」で何を学びますか?

クラスパス上の依存関係と条件アノテーションに基づいて、Spring BootがBeanを自動構成する仕組みを理解します。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Java Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「自動構成とSpring Bootスターター」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJava Academyレッスンでコードを書いて実行できますか?

はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 自動構成とSpring Bootスターター
  2. アプリケーションプロパティとプロファイル
  3. Beanの配線:@Component、@Service、@Repository
  4. コンストラクターインジェクションと循環依存
← Java Academyに戻る