自動構成と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=DEBUGActuator /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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 自動構成とSpring Bootスターター
- アプリケーションプロパティとプロファイル
- Beanの配線:@Component、@Service、@Repository
- コンストラクターインジェクションと循環依存