0Pricing
Java Academy · Lekcja

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.MyLibraryAutoConfiguration

Debugowanie 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=DEBUG

Punkt 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/conditions

Szybki 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

  1. Autokonfiguracja i startery Spring Boot
  2. Właściwości aplikacji i profile
  3. Wiązanie beanów: @Component, @Service, @Repository
  4. Wstrzykiwanie przez konstruktor i zależności cykliczne
← Powrót do Java Academy