Mam parę pytań odnośnie Springa.
- Czym jest DI? Ja rozumuję to tak, (np przez konstruktor) że jeżeli mamy instancję która jest polem innej instancji, to zamiast tworzyć w aplikacji tą instancję i ustawić ją za pomocą mutatorów (albo podawać ją jako parametr konstruktora) podajemy po prostu wartości a w konstruktor sam tworzy tą instancję? Coś takiego mniej więcej mam na myśli.
Class{
AnotherClass someClass
public Class(someValues){
this.someClass= new AnotherClass(someValues)
}
}
Zamiast stworzenia najpierw instancji AnotherClass, potem w konstruktorze podać tą instancję.
Jeżeli tak, to czy tworzenie w czystej Javie w taki sam sposób klas z instancjami jako pola to też się nazywa DI?
2) Czym jest automatyczne wiązanie? Dobrze myślę, że spring dzięki automatycznemu wiązaniu poszukuje pasujących klas do jakiegoś pola? Jak wywołać specjalnie błąd wiązania? Np, że dwie klasy pasują do jednego pola?
3) Czemu bez adnotacji @named w jednej z dwóch klas, gdzie instancja jednej z nich jest tylko (albo aż) polem drugiej, nie mogę utworzyć zmiennej gdyż spring się wysypuje?
4)Kiedy trzeba korzystać z automatycznych wiązań? Przykład podany przez Shaloma ( Beany wewnętrzne - stworzenie beanu klasy Person <- drugi post) przepisałem do kompilatora i usuwając adnotacj @Inject nadal się kompilował z takim samym rezultatem.
5) Jeżeli użyję adnotacji @named to bean będzie miał taką samą nazwę jak nazwa klasy tylko pisana z małej litery (jak w przypadku @Service)
Na razie tyle