Java Academy · Lektion

Automatisk konfiguration og Spring Boot-startere

Forstå, hvordan Spring Boot automatisk konfigurerer beans baseret på afhængigheder på classpathen og condition-annoteringer.

Lektion 1 af 413 trin

Automatisk konfiguration og Spring Boot-startere er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 4 lektioner i alt.

Hvad er Spring Boots autokonfiguration

Autokonfiguration konfigurerer automatisk Spring-beans baseret på det, der findes på classpathen og i miljøet. Det fjerner behovet for manuel opsætning af @Bean ved almindelige integrationer.

Annotationen @SpringBootApplication

@SpringBootApplication er en sammensætning af @Configuration, @EnableAutoConfiguration og @ComponentScan. Den aktiverer autokonfiguration og scanning af komponenter.

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

Sådan fungerer autokonfiguration

Spring Boot scanner META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (Spring Boot 3) efter en liste over autokonfigurationsklasser. Hver klasse anvendes betinget.

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

@ConditionalOnClass og @ConditionalOnMissingBean

Autokonfigurationsklasser bruger @Conditional-annoteringer til kun at blive anvendt, når bestemte betingelser er opfyldt — f.eks. når en klasse findes på classpathen, eller når en bean ikke allerede er defineret.

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

Spring Boot-startere

En starter er et kurateret sæt afhængighedsbeskrivelser. Hvis du føjer spring-boot-starter-web til dit projekt, får du Spring MVC, Tomcat, Jackson og deres autokonfigurationer med — ingen manuel søgning efter afhængigheder.

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

Almindelige startere

Vigtige startere: starter-web (REST + Tomcat), starter-data-jpa (JPA + Hibernate), starter-security, starter-test (JUnit + Mockito), starter-actuator (sundhed/målinger).

Tilsidesættelse af autokonfiguration

Definér din egen @Bean af samme type for at give den forrang frem for autokonfigurerede beans. @ConditionalOnMissingBean sikrer, at den autokonfigurerede bean kun oprettes, hvis din bean mangler.

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

Udelukkelse af autokonfiguration

Udeluk specifikke autokonfigurationsklasser, som du ikke ønsker — nyttigt, når en starter tilføjer noget, du vil konfigurere manuelt.

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

Opret din egen starter

Opret et startermodul med en autokonfigurationsklasse, og registrer det i META-INF/spring/....AutoConfiguration.imports. Andre projekter, der inkluderer din starter, får automatisk dine beans.

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

Fejlfinding af autokonfiguration

Kør med flaget --debug, eller angiv logging.level.org.springframework.boot.autoconfigure=DEBUG, for at se en "RAPPORT OVER BETINGELSESVURDERING", der viser, hvilke autokonfigurationer der blev anvendt eller udelukket, og hvorfor.

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

Actuator-/conditions-endpoint

Aktivér spring-boot-starter-actuator, og eksponér endpointet /actuator/conditions for at se rapporten over autokonfigurationsvurderingen under kørsel uden genstart.

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

Hurtigt tjek

Hvilken annotering sørger for, at en bean kun oprettes, hvis der ikke allerede er defineret en bean af den pågældende type?

Opsamling

Autokonfiguration bruger betingede annoteringer til at tilknytte beans baseret på classpathen og eksisterende beans. Startere samler afhængigheder og autokonfiguration. Tilsidesæt med dine egne beans. Udeluk uønskede konfigurationer. Fejlfind med --debug.

Gratis at komme i gang

Lær Java med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
104
Lektioner
374

Ofte stillede spørgsmål

Er lektionen “Automatisk konfiguration og Spring Boot-startere” gratis?

Ja — hele teksten til “Automatisk konfiguration og Spring Boot-startere” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Automatisk konfiguration og Spring Boot-startere”?

Forstå, hvordan Spring Boot automatisk konfigurerer beans baseret på afhængigheder på classpathen og condition-annoteringer. Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Java Academy?

Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Automatisk konfiguration og Spring Boot-startere”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Java Academy-lektion?

Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Automatisk konfiguration og Spring Boot-startere
  2. Applikationsegenskaber og profiler
  3. Bean-wiring: @Component, @Service, @Repository
  4. Konstruktorinjektion og cirkulære afhængigheder
← Tilbage til Java Academy