Spring Boot 4-mikrotjenester og REST-API'er · Lektion

Spring IoC-containeren

Se, hvordan Spring opretter og forbinder beans.

Lektion 1 af 413 trin

Spring IoC-containeren er en gratis Spring Boot 4-mikrotjenester og REST-API'er-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 Spring Boot 4-mikrotjenester og REST-API'er, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Spring Boot 4-mikrotjenester og REST-API'er-kurset indeholder 4 lektioner i alt.

Inversion af kontrol

Inversion of Control (IoC) betyder, at dine objekter ikke længere opretter deres egne samarbejdspartnere. I stedet konstruerer en container dem og overdrager (indsprøjter) deres afhængigheder.

Det vender det traditionelle flow på hovedet: I stedet for at kalde new overalt deklarerer du, hvad du har brug for, og lader frameworket forbinde det.

ApplicationContext

Springs IoC-container er ApplicationContext. Den læser bean-definitioner, instansierer dem, løser afhængigheder og styrer deres levetid fra oprettelse til nedlukning.

I Spring Boot opbygger SpringApplication.run denne kontekst for dig og holder den kørende.

Hvad er en bean?

En bean er ganske enkelt et objekt, som containeren opretter og administrerer. Konteksten ved, hvordan det skal bygges, hvad det afhænger af, og hvornår det skal destrueres.

Beans er typisk singletoner, der lever lige så længe som applikationen, selv om der findes andre omfang.

Deklaration af beans med @Component

Annotér en klasse med @Component, så registrerer komponentscanning den. Specialiseringer som @Service, @Repository og @Controller er @Component med ekstra betydning.

@Service
public class OrderService {
    public void placeOrder() { /* ... */ }
}

@Repository
public class OrderRepository { }

Komponentscanning

@SpringBootApplication inkluderer @ComponentScan, som søger i hovedklassens pakke og underpakker efter stereotype-annotationer. Placér dine klasser under denne rodpakke, så de bliver fundet.

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

Deklaration af beans med @Bean

For typer, som du ikke selv ejer eller vil konfigurere manuelt, skal du definere en factory-metode annoteret med @Bean i en @Configuration-klasse. Returværdien bliver en administreret bean.

@Configuration
public class AppConfig {
    @Bean
    public RestClient restClient() {
        return RestClient.builder()
            .baseUrl("https://api.example.com")
            .build();
    }
}

@Component over for @Bean

Begge opretter beans, men de adskiller sig med hensyn til kontrol:

  • @Component — du ejer klassen og lader scanning registrere den
  • @Bean — eksplicit factory-metode, ideel til tredjepartsklasser eller betinget oprettelse

Afhængighedsinjektion i praksis

Containeren læser en beans konstruktørparametre og leverer matchende beans. Her modtager OrderService automatisk en fuldt oprettet OrderRepository.

@Service
public class OrderService {
    private final OrderRepository repo;
    public OrderService(OrderRepository repo) {
        this.repo = repo;
    }
}

Opløsning efter type

Spring indsprøjter efter type. Hvis præcis én bean matcher parametertypen, forbindes den. Beanens konkrete klasse kan implementere en grænseflade, og du indsprøjter grænsefladen.

@Service
public class NotificationService {
    private final MessageSender sender; // interface
    public NotificationService(MessageSender sender) {
        this.sender = sender; // gets the single impl bean
    }
}

Håndtering af flere kandidater

Når flere beans matcher en type, kan du fjerne tvetydigheden med @Primary på standardvalget eller @Qualifier ved indsprøjtningspunktet for at angive den præcise bean.

@Bean @Primary
MessageSender emailSender() { return new EmailSender(); }

@Bean
MessageSender smsSender() { return new SmsSender(); }

// inject a specific one
public Svc(@Qualifier("smsSender") MessageSender s) { }

Hvorfor IoC er nyttigt

At lade containeren stå for sammenkoblingen giver reelle fordele:

  • Testbarhed — indsæt mocks i stedet for rigtige samarbejdspartnere
  • Løs kobling — vær afhængig af grænseflader, ikke konstruktører
  • Centraliseret livscyklus — ét sted håndterer oprettelse og nedlukning

Hurtigt tjek

Test din forståelse af bean-deklaration.

Opsummering

IoC-containeren forbinder din applikation.

  • IoC betyder, at containeren – ikke din kode – opretter og indsætter samarbejdspartnere
  • ApplicationContext håndterer beans
  • @Component + scanning registrerer dine klasser; @Bean håndterer de øvrige
  • Indsættelse afgøres efter type og entydiggøres med @Primary/@Qualifier
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
24
Lektioner
93

Ofte stillede spørgsmål

Er lektionen “Spring IoC-containeren” gratis?

Ja — hele teksten til “Spring IoC-containeren” 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 Spring Boot 4-mikrotjenester og REST-API'er-kurset, skal du opgradere til CoddyKit PRO. Spring Boot 4-mikrotjenester og REST-API'er-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Spring IoC-containeren”?

Se, hvordan Spring opretter og forbinder beans. Du øver dig i Spring Boot 4-mikrotjenester og REST-API'er 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å Spring Boot 4-mikrotjenester og REST-API'er?

Der kræves ingen tidligere erfaring. Spring Boot 4-mikrotjenester og REST-API'er 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 “Spring IoC-containeren”?

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 Spring Boot 4-mikrotjenester og REST-API'er-lektion?

Ja. Alle Spring Boot 4-mikrotjenester og REST-API'er-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. Spring IoC-containeren
  2. Constructor injection kontra field injection
  3. Bean scopes
  4. Lifecycle-callbacks
← Tilbage til Spring Boot 4-mikrotjenester og REST-API'er