Sobes.tech
Middle

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:

  1. 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
    }
    
  2. 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
    }
    
  3. 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.