Autokonfiguracja i startery Spring Boot
Proszę zrozumieć, jak Spring Boot automatycznie konfiguruje beany na podstawie zależności w classpath oraz adnotacji warunkowych.
Autokonfiguracja i startery Spring Boot to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.
Czym jest autokonfiguracja Spring Boot?
Autokonfiguracja automatycznie konfiguruje beany Springa na podstawie tego, co jest dostępne na ścieżce klas i w środowisku. Eliminuje konieczność ręcznego definiowania @Bean w przypadku typowych integracji.
Adnotacja @SpringBootApplication
@SpringBootApplication jest połączeniem @Configuration, @EnableAutoConfiguration i @ComponentScan. Aktywuje autokonfigurację oraz skanowanie komponentów.
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}Jak działa autokonfiguracja
Spring Boot przeszukuje plik META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (Spring Boot 3) w poszukiwaniu listy klas autokonfiguracji. Każda klasa jest stosowana warunkowo.
// Spring Boot 3 imports file:
// org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
// org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration@ConditionalOnClass i @ConditionalOnMissingBean
Klasy autokonfiguracji używają adnotacji @Conditional, aby były stosowane tylko po spełnieniu określonych warunków — na przykład gdy klasa znajduje się na ścieżce klas lub gdy bean nie został jeszcze zdefiniowany.
@AutoConfiguration
@ConditionalOnClass(DataSource.class)
@ConditionalOnMissingBean(DataSource.class)
public class DataSourceAutoConfiguration {
@Bean
public DataSource dataSource(DataSourceProperties props) {
return DataSourceBuilder.create().build();
}
}Startery Spring Boot
Starter to starannie dobrany zestaw deskryptorów zależności. Dodanie spring-boot-starter-web do projektu dołącza Spring MVC, Tomcat, Jackson oraz ich autokonfiguracje — bez konieczności ręcznego wyszukiwania zależności.
// 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"
}Najczęściej używane startery
Najważniejsze startery to: starter-web (REST + Tomcat), starter-data-jpa (JPA + Hibernate), starter-security, starter-test (JUnit + Mockito) oraz starter-actuator (zdrowie aplikacji i metryki).
Zastępowanie autokonfiguracji
Należy zdefiniować własny @Bean tego samego typu, aby miał pierwszeństwo przed beanami utworzonymi przez autokonfigurację. @ConditionalOnMissingBean gwarantuje, że bean utworzony przez autokonfigurację powstanie tylko wtedy, gdy własny bean nie istnieje.
// Override auto-configured ObjectMapper:
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper()
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.registerModule(new JavaTimeModule());
}
}Wykluczanie autokonfiguracji
Należy wykluczyć konkretne klasy autokonfiguracji, których nie chcą Państwo używać — jest to przydatne, gdy starter dołącza coś, co ma być skonfigurowane ręcznie.
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
SecurityAutoConfiguration.class
})
public class MyApp { ... }Tworzenie własnego startera
Należy utworzyć moduł startera z klasą autokonfiguracji i zarejestrować ją w pliku META-INF/spring/....AutoConfiguration.imports. Inne projekty, które dołączą Państwa starter, automatycznie otrzymają zdefiniowane w nim beany.
// my-starter/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports:
// com.example.MyLibraryAutoConfigurationDebugowanie autokonfiguracji
Należy uruchomić aplikację z flagą --debug lub ustawić logging.level.org.springframework.boot.autoconfigure=DEBUG, aby wyświetlić raport "CONDITIONS EVALUATION REPORT" zawierający listę zastosowanych lub pominiętych autokonfiguracji oraz przyczyny tych decyzji.
java -jar myapp.jar --debug
# Or in application.properties:
# logging.level.org.springframework.boot.autoconfigure=DEBUGPunkt końcowy Actuator /conditions
Należy włączyć spring-boot-starter-actuator i udostępnić punkt końcowy /actuator/conditions, aby wyświetlać raport oceny autokonfiguracji w czasie działania, bez ponownego uruchamiania aplikacji.
# application.properties:
management.endpoints.web.exposure.include=conditions
# Then:
curl http://localhost:8080/actuator/conditionsSzybki test
Jaka adnotacja powoduje utworzenie beana tylko wtedy, gdy bean tego typu nie został jeszcze zdefiniowany?
Powtórzenie
Autokonfiguracja używa adnotacji warunkowych do konfigurowania beanów na podstawie ścieżki klas i istniejących beanów. Startery łączą zależności z autokonfiguracją. Własne beany pozwalają zastąpić konfigurację domyślną. Niepotrzebne konfiguracje można wykluczyć. Do debugowania należy użyć --debug.
Często zadawane pytania
Czy lekcja „Autokonfiguracja i startery Spring Boot” jest bezpłatna?
Tak — pełny tekst „Autokonfiguracja i startery Spring Boot” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Autokonfiguracja i startery Spring Boot”?
Proszę zrozumieć, jak Spring Boot automatycznie konfiguruje beany na podstawie zależności w classpath oraz adnotacji warunkowych. Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Java Academy?
Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Autokonfiguracja i startery Spring Boot”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?
Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Autokonfiguracja i startery Spring Boot
- Właściwości aplikacji i profile
- Wiązanie beanów: @Component, @Service, @Repository
- Wstrzykiwanie przez konstruktor i zależności cykliczne