W multimodule spring project nie działa Autowire

0

Poniższe dotyczy wielomodułowego projektu maven.
Mam projekt A a w nim modele, DAO i serwisy oraz ze 2 kontrolery do testowania. Wszystko działa dobrze jak działam w obrębie tego projektu tylko.
Projekt B jest drugim modułem. Chciałem w nim skorzystać z zasobów projektu A. W projekcie B uruchamiam serwis z projektu A, w którym mam zmienną typu DAO jako @Autowire. Okazuje się, że zmienna ta ma wartość null - tak jak by DAO nie zostało wcześniej utworzone i przesłane do kontrolera. Jeśli to samo robię w obrębie projektu A DAO nie jest null i wszystko działa poprawnie. Czy spotkaliście się z czymś takim?

Pozdrawiam

Krzysztof

0

A jak ją deklarujesz? Bo wygląda na to, że albo nie wczytujesz kontekstu z modułu A, albo też tworzysz ten obiekt samemu.

0

@kblaszke opisz swój problem dokładniej bo z tego co piszesz wynika trochę tak jakbyś ładował kontekst tylko dla jednego projektu, a potem korzystał z klas drugiego projektu. Jak nie załadujesz kontekstu to beany się nie zainicjalizują.

0
wartek napisał(a)

A jak ją deklarujesz? Bo wygląda na to, że albo nie wczytujesz kontekstu z modułu A, albo też tworzysz ten obiekt samemu.

Chyba wybrnąłem z sytuacji.

  1. Dodałem Projekt A do buildpath projektu B
  2. W controllers.xml dodałem <context:component-scan na pakiety obiektu A (bez skanowania Controllerów
  3. W persistence.xml dodałem mapowania poszczególnych ORMów

Czy to poprawne rozwiązanie? Działać działa ale może właśnie robią coś nie tak jak się powinno...

@Shalom A Ty jak myślisz?

Pozdrawiam

Krzysiek

0

A to są dwa osobne projekty / komponenty, czy np. projekty typu "core" i "common" czyli takie gdzie jeden z projektów przechowuje klasy wspólne dla kilku osobnych aplikacji / komponentów?
Bo jeśli to są dwie różne aplikacje / komponenty to zrobiłeś to źle i absolutnie tak ci nie wolno. Takie powiązania musisz skądś wyczarować (np. z jndi).
Jeśli to opcja nr 2 to możesz od biedy zrobić tak jak napisałeś.

0
Shalom napisał(a)

A to są dwa osobne projekty / komponenty, czy np. projekty typu "core" i "common" czyli takie gdzie jeden z projektów przechowuje klasy wspólne dla kilku osobnych aplikacji / komponentów?
Bo jeśli to są dwie różne aplikacje / komponenty to zrobiłeś to źle i absolutnie tak ci nie wolno. Takie powiązania musisz skądś wyczarować (np. z jndi).
Jeśli to opcja nr 2 to możesz od biedy zrobić tak jak napisałeś.

To miała być raczej ta druga opcja. Zrobiłem projekt wielomodułowy w maven. W jednym module są klasy ORM, DAO, i serwisy. W drugim module kontrolery platformy administracyjnej. W trzecim module kontrolery właściwej aplikacji. Po między modułami ustawiłem zależności w pom.xml. Czy jest jeszcze jakiś inny/lepszy sposób na osiągnięcie zamierzonego efektu? Siedzę już nad tym dwa dni i nie mogę nic sensownego wygooglać. JNDI? Myślałem, że to tylko do trzymania namiarów na bazę danych na zewnątrz aplikacji. Chyba muszę się tym bardziej zainteresować... :)

K.

0

Jeśli to jest ta druga opcja i w tym projekcie "common" też masz application context to musisz ten kontekst załadować (możesz go na przykład załączyć do application context aplikacji)

0
Shalom napisał(a)

Jeśli to jest ta druga opcja i w tym projekcie "common" też masz application context to musisz ten kontekst załadować (możesz go na przykład załączyć do application context aplikacji)

Jakoś podać mu ścieżkę do kontekstu drugiego modułu w parametrach DispatcherServlet'a?

n.p.:
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/app/servlet-context.xml ../../../ModulA/src/main/webapp/WEB-INF/spring/app/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

0
Shalom napisał(a)

http://lmgtfy.com/?q=spring+splitting+applicationcontext+into+multiple+files

Ok! Gdybym znalazł coś sensownego googlając to bym głowy nie zawracał. Chodzi o to, że wszędzie piszą jak wczytać kilka kontekstów (kawałków kontekstu) ale tego samego projektu... To jest dla mnie jasne. Jednak gdy mam dwa osobne projekty, znaczy w osobnych katalogach to sprawa się komplikuje... Czegoś tutaj nie łapię...

Krzysiek

1 użytkowników online, w tym zalogowanych: 0, gości: 1