Chciałbym zbudować własne niestandardowe środowisko DI oparte na adnotacjach Java i potrzebuję małego kierunku, aby zacząć. Wiem, że byłoby znacznie łatwiej użyć jednej z wielu wspaniałych struktur, takich jak guice czy wiosna, ale ze względu na moją własną ciekawość chciałbym zbudować własną.Wstrzykiwanie zależności z adnotacjami
Nie jestem obeznany z adnotacjami, więc mam problem ze znalezieniem zasobów i naprawdę doceniam kogoś, kto wymyślił kilka kroków, które muszę wykonać, aby zacząć.
Jak wcześniej wspomniano, id lubi podejście do fabryki i jakoś etykietować moje pobiera z adnotacją typu @Resource lub @Injectable, a następnie w moich klasach biznesowych być w stanie ustawić moje zależności zmiennych z adnotacją @Inject i mieć zasób jest automatycznie dostępny.
Czy ktoś ma jakiekolwiek zasoby, które mogą przekazać, aby pomóc mi zrozumieć proces oznaczania metod na podstawie adnotacji, a następnie pobieranie wartości z oddzielnej klasy na podstawie adnotacji. Potrzebuję tylko małego kierunku, czegoś, co pomoże mi zacząć. I oczywiście z przyjemnością opublikuję tutaj małą próbkę kodu, gdy tylko zacznę, dla dobra innych przyszłych lektur.
EDIT
Zasoby używam umieścić to razem:
How to find annotations in a given package: Stack Overflow ?
Scanning Annotations at Runtime
nie mam faktycznie skończył pisać to jeszcze, ale podstawowym zadaniem li st będzie następująco (dla każdego, kto może być zainteresowany w tym coś podobnego w przyszłości)
Na skanie klasa wykonawczego dla wszystkich pól @Inject i uzyskać typ obiektu.
Skanowanie wszystkich klas (lub tylko określonego pakietu klas (nie miałem jeszcze decyzji )) dla adnotowanych metod @InjectableResource.
Zapętlaj wszystkie metody z adnotacjami i znajdź metodę zwracającą żądany typ obiektu .
Uruchom metodę i uzyskaj zależność.
Przydatne będzie również odnotowanie, że podczas skanowania wszystkich zajęć będę korzystać z biblioteki o nazwie Javassist. Zasadniczo to, co to robi, pozwala mi odczytać informacje o bajtach każdej klasy bez faktycznego ładowania klasy. Dzięki temu mogę czytać ciągi adnotacji bez powodowania poważnych problemów z pamięcią.
Możesz zacząć od standardowego [Oracle Adnotation Trail] (http://docs.oracle.com/javase/tutorial/java/javaOO/annotations.html). Będziesz potrzebował jakiegoś sposobu zeskanowania całej ścieżki klas dla zasobów, jednym ze sposobów byłoby użycie narzędzia takiego jak [Google Reflections] (http://code.google.com/p/reflections/). I wreszcie będziesz potrzebował jakiegoś sposobu manipulowania klasami, na przykład z [Javassist] (http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/). – Perception