Dependency Injection 2 - Satttoshi/github-wiki-generator GitHub Wiki
Dependency Injection ist ein Entwurfsmuster, das die Abhängigkeiten zwischen verschiedenen Komponenten oder Modulen eines Software-Systems effektiv behandelt. Spring Framework ist ein leistungsfähiges Framework für die Java-Programmierung, das Dependency Injection unterstützt und sich als besonders nützlich für die Anwendung von Dependency Injection in der Praxis erwiesen hat.
In Spring Framework können die Annotationen @Autowired, @Repository und @Service verwendet werden, um die Bestandteile der Anwendungen zu kategorisieren und die Abhängigkeiten zwischen ihnen zu verwalten. Nacheinander werden diese Annotationen bemerkenswert:
In Spring können die Anwendungsdaten durch die Verwendung der @Repository-Annotation leicht behandelt werden. Diese Annotation markiert eine Klasse als eine Komponente, die für die Datenübertragung zuständig ist. Wenn Repository-Klassen in Spring erstellt werden, werden sie als Singleton-Objekte erstellt, wodurch die Möglichkeit der Dateninkonsistenz stark verringert wird.
Ein Beispiel für die Verwendung von @Repository könnte wie folgt aussehen:
@Repository
public class UserRepositoryImpl implements UserRepository {
    // Implementation of UserRepository methods
}Die @Service Annotation wird für die Klassen verwendet, die die Hauptlogik in der Anwendung behandeln und die Controller und Repository-Klassen koordinieren. Hier ist ein Beispiel für die Verwendung von @Service:
@Service
public class UserServiceImpl implements UserService {
    private final UserRepository userRepository;
    @Autowired
    public UserServiceImpl(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
    // Implementation of UserService methods
}Die @Autowired-Annotation wird verwendet, um einen Spring-Bean mit einer anderen zu injizieren. Um die Abhängigkeit zwischen den Beans zu verwalten, veranlasst Spring den Dependency Injection, um die Abhängigkeit zur Laufzeit zu erfüllen. Das folgende Beispiel zeigt die Verwendung von @Autowired:
@Service
public class UserServiceImpl implements UserService {
    private final UserRepository userRepository;
    @Autowired
    public UserServiceImpl(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
    
    // ...
}Das Feld userRepository wird durch die Verwendung von @Autowired in der Konstruktor-Methode injiziert.
Mit der Verwendung dieser Annotationen wird die Verwaltung von Abhängigkeiten in einer Spring-Anwendung auf einfache und elegante Weise umgesetzt. Die Korrekturen und Verbesserungen der Komponenten-Module können leicht umgesetzt werden, ohne den Rest der Anwendung zu beeinträchtigen.