LU09b - IoC (Inversion of Control) & DI (Dependency Injection)

Beim Prinzip IoC geht es darum, einem Framework o. Ä. von Aussen Teile des eigenen Codes zu kontrollieren.

Es gibt verschiedene Entwurfsmuster, die dafür geeignet sind. Unter anderem:

Bei Dependency Injection wird die Initialisierung eines Objekts nicht im abhängigen Objekt sondern zum Beispiel mittels zentralen Konfiguration ausgelagert.

Spring Boot erlaubt folgende Arten von Injection für Beans-Klassen (@Component, @Service, @Repository, @Controller, …)

Field Injection

public class ProjectApiController implements ProjectApi {
 
    @Autowired
    private final JwtUtil jwtUtil;
    ...
}

Anmerkungen:

Constructor Injection

public class ProjectApiController implements ProjectApi {
 
    private final JwtUtil jwtUtil;
 
    @Autowired
    public ProjectApiController(JwtUtil jwtUtil) {
        this.jwtUtil = jwtUtil;
    }
    ...
}

Anmerkungen:

Setter Injection

public class ProjectApiController implements ProjectApi {
 
    @Autowired
    private final JwtUtil jwtUtil;
    ...
}

Anmerkungen: