Rozumiem wszystkiwanie zależności jako taki prosty koncept (jak ktos napisał na stackoverflow) i podał taki prosty przykład:
public class A {
private B b;
public A() {
this.b = new B(); // A *depends on* B
}
public void DoSomeStuff() {
// Do something with B here
}
}
public static void Main(string[] args) {
A a = new A();
a.DoSomeStuff();
}
public class A {
private B b;
public A(B b) { // A now takes its dependencies as arguments
this.b = b; // look ma, no "new"!
}
public void DoSomeStuff() {
// Do something with B here
}
}
public static void Main(string[] args) {
B b = new B(); // B is constructed here instead
A a = new A(b);
a.DoSomeStuff();
}
Dzieki temu klasa A może przyjąć jakikolwiek argument B, który będzie tworzony gdzieś tam.
No i teraz pojawia się u mnie pytanie. Dlaczego w EJB/Spring używamy adnotacji?
- Czy one dają to samo co powyższy przykład?
- Czy dają jeszcze coś więcej?
- Czy jak dam w klasie ABC pole z @Inject dla obiektu to gdzieś "pod spodem" wykonuje się konstruktor przyjmujący właśnie ten obiekt?
I jak dodam kolejny Inject to pod spodem mam wykonuje sie konstruktor przyjmujacy dwa argumenty?
public class ABC {
@Inject
private ObiektX obiektX;
.
.
.
}