2012-05-11 27 views
9

Jak wstrzyknąć obiekt do serwletu?Jak korzystać z iniekcji zależności w serwletu?

To znaczy, nie mogę użyć konstruktora DI, ponieważ serwlety są tworzone przez kontener serwletów.
Nie widzę też przyjemnego sposobu implementowania DI dla serwletu.

Czy powinienem używać nasłuchiwania serwletów? Czy są jakieś najlepsze praktyki?

P.S. Nie mam ani Spring, ani Guice, ani żadnej innej struktury DI, interesuje mnie ręczny zastrzyk zależności.

+2

Popatrz na to pytanie. Może to pomoże: http://stackoverflow.com/q/1992132/891391 – yatul

Odpowiedz

0

można spożywać usługi, które są utworzone/zarządzanych przez jakiegoś kontenera IOC (wiosna, Guice)

Można utworzyć realizację ContextAware i wyciągnąć fasolę jak i w razie potrzeby z Servlet

16

Jest to możliwe w ramach Servlet 3.0. Rejestrujesz ServletContextListener, który programowo rejestruje instancje Serwletu za pomocą metody ServletContext addServlet(String, Servlet) tuż przed uruchomieniem aplikacji. Ponieważ sam tworzysz instancje Servlet, możesz dać im odpowiednie konstruktory i wstrzyknąć zależności.

Po raz pierwszy stworzyłem an example ilustrującą podstawową technikę.

+1

+1 Nie wiedziałem o 'addServlet' – ewernli

+0

@ewernli: IMO, Sun/Oracle nie dały mu rozgłosu, na jaki zasługuje. –

+0

Dzięki kolego, bardzo pomocne – 7zark7

0

Można użyć JNDI, interfejsu nazewnictwa Java i katalogu oraz @Resource do wstrzyknięcia.

Powiązane problemy