Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
de:modul:ffit:3-jahr:java:learningunits:lu09:b [2025/11/03 23:47] – angelegt apeterde:modul:ffit:3-jahr:java:learningunits:lu09:b [2025/11/04 01:35] (aktuell) apeter
Zeile 1: Zeile 1:
-====== LU09b - Injections ======+====== 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.
  
-==== Konstruktor-Injektion ==== +Es gibt verschiedene Entwurfsmuster, die dafür geeignet sind. Unter anderem: 
 +  * Strategie-Entwurfsmuster (Strategy design pattern) 
 +  * Service-Locator (Service locator) 
 +  * Fabrikmethode (Factory method) 
 +  * Dependency Injection
  
-...+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 ==== 
 +<code java>
 +public class ProjectApiController implements ProjectApi {
 +
 +    @Autowired
 +    private final JwtUtil jwtUtil;
 +    ...
 +}
 +</code>
 +
 +Anmerkungen:
 +  * Mühsamer zu testen
 +  * Felder können nicht zugleich ''final'' sein
 +
 +==== Constructor Injection ==== 
 +<code java>
 +public class ProjectApiController implements ProjectApi {
 +
 +    private final JwtUtil jwtUtil;
 +
 +    @Autowired
 +    public ProjectApiController(JwtUtil jwtUtil) {
 +        this.jwtUtil = jwtUtil;
 +    }
 +    ...
 +}
 +</code>
 +
 +Anmerkungen:
 +  * ''@Autowired'' ist optional, sofern es nur einen Konstruktor gibt.
 +
 +==== Setter Injection ====
 +<code java>
 +public class ProjectApiController implements ProjectApi {
 +
 +    @Autowired
 +    private final JwtUtil jwtUtil;
 +    ...
 +}
 +</code>
 +Anmerkungen:
 +  * Falls das Feld veränderbar oder optional ist
  • de/modul/ffit/3-jahr/java/learningunits/lu09/b.1762210042.txt.gz
  • Zuletzt geändert: 2025/11/03 23:47
  • von apeter