Lze vkládat závislosti nejen přes konstruktor?
sobes.tech AI
Odpověď od AI
Ano, je to možné. Kromě injekce závislostí přes konstruktor (konstruktorová injekce závislostí) existují v Spring Framework následující hlavní způsoby:
-
Injekce přes setter (setterová injekce závislostí): Závislosti jsou injektovány prostřednictvím veřejných setter metod.
public class MyClass { private Dependency dependency; public void setDependency(Dependency dependency) { this.dependency = dependency; } // ... další metody } -
Injekce přes pole (injekce závislostí na úrovni pole): Závislosti jsou injektovány přímo do polí třídy pomocí anotací (například
@Autowired). Tento způsob je nejběžnější, ale má své nevýhody (například složitost při jednotkovém testování a skryté závislosti).public class MyClass { @Autowired private Dependency dependency; // ... další metody } -
Injekce přes metody (metodová injekce závislostí): Méně běžný způsob, kdy jsou závislosti injektovány přes jakoukoli metodu označenou příslušnou anotací (
@Autowired).public class MyClass { private Dependency dependency; @Autowired public void configure(Dependency dependency) { this.dependency = dependency; } // ... další metody }
Volba metody závisí na konkrétní situaci a preferencích. Konstruktorová injekce je obvykle považována za preferovanou, protože zajišťuje, že objekt bude vytvořen se všemi potřebnými závislostmi a usnadňuje testování. Nicméně, injekce přes pole nebo setter může být pohodlnější pro volitelné závislosti nebo při práci s legacy kódem.