Je možné zavádzať závislosti nielen cez konštruktor?
sobes.tech AI
Odpoveď od AI
Áno, je to možné. Okrem injektáže závislostí cez konštruktor (Constructor-based dependency injection) existujú v Spring Framework nasledujúce hlavné spôsoby:
-
Injektáž cez setter (Setter-based dependency injection): Závislosti sú injektované prostredníctvom verejných setter metód.
public class MyClass { private Dependency dependency; public void setDependency(Dependency dependency) { this.dependency = dependency; } // ... ďalšie metódy } -
Injektáž cez pole (Field-based dependency injection): Závislosti sú injektované priamo do polí triedy pomocou anotácií (napríklad
@Autowired). Tento spôsob je najbežnejší, ale má svoje nevýhody (napríklad, ťažkosti pri jednotkovom testovaní a skryté závislosti).public class MyClass { @Autowired private Dependency dependency; // ... ďalšie metódy } -
Injektáž cez metódy (Method-based dependency injection): Menej bežný spôsob, pri ktorom sú závislosti injektované prostredníctvom akýchkoľvek metód označených vhodnou anotáciou (
@Autowired).public class MyClass { private Dependency dependency; @Autowired public void configure(Dependency dependency) { this.dependency = dependency; } // ... ďalšie metódy }
Voľba spôsobu závisí od konkrétnej situácie a preferencií. Konstruktorová injektáž sa zvyčajne považuje za preferovanú, pretože zabezpečuje, že objekt bude vytvorený so všetkými potrebnými závislosťami a uľahčuje testovanie. Avšak, injektáž cez polia alebo settery môže byť pohodlnejšia pre voliteľné závislosti alebo pri práci s legacy kódom.