Java Academy · Oppitunti

Automaattinen konfigurointi ja Spring Boot -starterit

Ymmärrä, miten Spring Boot määrittää beanit automaattisesti classpath-riippuvuuksien ja ehtoja määrittävien annotaatioiden perusteella.

Oppitunti 1/413 vaihetta

Automaattinen konfigurointi ja Spring Boot -starterit on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.

Mikä on Spring Bootin automaattinen konfigurointi?

Automaattinen konfigurointi määrittää Spring-beanit automaattisesti sen perusteella, mitä classpathissa ja ympäristössä on käytettävissä. Se poistaa manuaalisen @Bean-määrityksen tarpeen yleisissä integraatioissa.

@SpringBootApplication-annotaatio

@SpringBootApplication on yhdistelmä annotaatioista @Configuration, @EnableAutoConfiguration ja @ComponentScan. Se aktivoi automaattisen konfiguroinnin ja komponenttien skannauksen.

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

Miten automaattinen konfigurointi toimii

Spring Boot etsii tiedostosta META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (Spring Boot 3) automaattisten konfiguraatioluokkien luettelon. Kukin luokka otetaan käyttöön ehtojen perusteella.

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

@ConditionalOnClass ja @ConditionalOnMissingBean

Automaattiset konfiguraatioluokat käyttävät @Conditional-annotaatioita, jotta ne otetaan käyttöön vain tiettyjen ehtojen täyttyessä — esimerkiksi kun luokka on classpathissa tai beania ei ole vielä määritetty.

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

Spring Boot -starterit

Starter on kuratoitu joukko riippuvuusmäärittelyjä. Kun lisäätte projektiinne spring-boot-starter-web-starterin, se tuo mukanaan Spring MVC:n, Tomcatin, Jacksonin ja niiden automaattiset konfiguraatiot — riippuvuuksia ei tarvitse etsiä manuaalisesti.

// 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"
}

Yleiset starterit

Keskeisiä startereita ovat: starter-web (REST + Tomcat), starter-data-jpa (JPA + Hibernate), starter-security, starter-test (JUnit + Mockito) ja starter-actuator (terveystiedot ja mittarit).

Automaattisen konfiguroinnin ohittaminen

Määritelkää oma saman tyyppinen @Bean, jotta se asetetaan automaattisesti määritettyjen beanien edelle. @ConditionalOnMissingBean varmistaa, että automaattisesti määritetty bean luodaan vain, jos oma beaninne puuttuu.

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

Automaattisen konfiguroinnin poissulkeminen

Poissulkekaa tietyt automaattiset konfiguraatioluokat, joita ette halua käyttää — tämä on hyödyllistä, kun starter tuo mukanaan jotain, jonka haluatte määrittää manuaalisesti.

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

Oman starterin luominen

Luokaa starter-moduuli, jossa on automaattinen konfiguraatioluokka, ja rekisteröikää se tiedostossa META-INF/spring/....AutoConfiguration.imports. Muut projektit, jotka sisällyttävät starterinne, saavat beaninne automaattisesti.

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

Automaattisen konfiguroinnin vianmääritys

Suorittakaa sovellus --debug-lipulla tai asettakaa logging.level.org.springframework.boot.autoconfigure=DEBUG, jotta näette "CONDITIONS EVALUATION REPORT" -raportin. Raportissa luetellaan, mitkä automaattiset konfiguraatiot otettiin käyttöön tai jätettiin pois ja miksi.

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

Actuator /conditions -päätepiste

Ottakaa spring-boot-starter-actuator käyttöön ja julkaiskaa /actuator/conditions-päätepiste, jotta näette automaattisen konfiguroinnin arviointiraportin ajon aikana ilman uudelleenkäynnistystä.

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

Pikatarkistus

Mikä annotaatio saa beanin luotua vain, jos kyseistä tyyppiä olevaa beania ei ole vielä määritetty?

Kertaus

Automaattinen konfigurointi käyttää ehtoperustaisia annotaatioita beanien kytkemiseen classpathin ja olemassa olevien beanien perusteella. Starterit kokoavat yhteen riippuvuudet ja automaattisen konfiguroinnin. Ohittakaa oletukset omilla beaneillanne. Poissulkekaa tarpeettomat konfiguraatiot. Käyttäkää vianmääritykseen --debug-lippua.

Aloita maksutta

Opi Java tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
104
Oppitunnit
374

Usein kysytyt kysymykset

Onko oppitunti ”Automaattinen konfigurointi ja Spring Boot -starterit” ilmainen?

Kyllä – oppitunnin ”Automaattinen konfigurointi ja Spring Boot -starterit” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Automaattinen konfigurointi ja Spring Boot -starterit”?

Ymmärrä, miten Spring Boot määrittää beanit automaattisesti classpath-riippuvuuksien ja ehtoja määrittävien annotaatioiden perusteella. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Automaattinen konfigurointi ja Spring Boot -starterit”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?

Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Automaattinen konfigurointi ja Spring Boot -starterit
  2. Sovelluksen ominaisuudet ja profiilit
  3. Beanien kytkentä: @Component, @Service, @Repository
  4. Konstruktori-injektio ja kehäriippuvuudet
← Takaisin: Java Academy