Mam problemy, aby zrozumieć, jak zastosować nową funkcję Dependency Injection w Play 2.4. Znam Guice i tęsknię w Dokumentacji Play, wyjaśnienie, jak i kiedy ma miejsce faktyczne wiązanie. Przeczytałem oficjalny dokument [1] i próbowałem użyć najnowszego Play Mailera [2] jako przykładu. Przykład Play Mailer wykorzystuje dowolną klasę i zawiera adnotację o wartości MailerClient
z @inject
. Kiedy próbuję użyć obiektu tej klasy, właściwość jest null
, przynajmniej podczas debugowania. Gdzie i kiedy muszę zrobić właściwy zastrzyk? Mam taki sam problem z adnotacją @singleton
. Wyjaśniono tylko, jak ją opatrzyć, ale nie w jaki sposób uzyskać obiekt. Czy muszę używać Guice bezpośrednio, czy jest to zintegrowane?Understanding Play 2.4 Dependency Injection
[1] https://www.playframework.com/documentation/2.4.x/JavaDependencyInjection
[2] https://github.com/playframework/play-mailer
Czy możesz pokazać nam swój kod? – Salem
Jest to zasadniczo jak oficjalny przykład Play Mailer. Inicjuję 'MyComponent' w innej klasie i wywołuje metodę' sendMail() '. – linsenfips
Jestem również zdezorientowany i chciałbym zobaczyć więcej przykładów. Piszę trochę kodu S3 i mam obiekt S3File zależny od S3Service, który powinien zostać wstrzyknięty. Jak utworzyć nową instancję S3File z wtryskiwaną S3Service? Czy mogę utworzyć wtryskiwacz w moim kontrolerze? W takim przypadku myślę, że użyłbym "injector.getInstance (S3File.class)" zamiast "nowy S3File"? Jak utworzyć wtryskiwacz - wydaje się, że overkill musi utworzyć konkretną impozycję modułu AbstractModule, aby wykonać wiązanie dla tej jednej klasy. Co robi funkcja @ImplementedBy w moim interfejsie, jeśli nie to? – eljaydub