Obecnie piszemy aplikację, która jest podzielona na wiele projektów/modułów. Na przykład, weźmy następujące moduły:Używanie wielu plików właściwości (za pomocą PropertyPlaceholderConfigurer) w wielu projektach/modułach
- myApp-DAO
- myApp-jabber
Każdy moduł ma swój własny kontekst Wiosna pliku XML. Dla modułu DAO mam PropertyPlaceholderConfigurer, który odczytuje plik właściwości z wymaganymi parametrami połączenia db. W module Jabber mam również właściwość PropertyPlaceHolderConfigurer dla właściwości połączenia Jabber.
Teraz dostępna jest główna aplikacja, która obejmuje myApp-DAO i myApp-jabber. Czyta wszystkie pliki kontekstowe i rozpoczyna jeden duży kontekst wiosenny. Niestety wygląda na to, że może istnieć tylko jeden obiekt PropertyPlaceholderConfigurer dla każdego kontekstu, więc niezależnie od tego, który moduł zostanie wczytany jako pierwszy, jest w stanie odczytać jego parametry połączenia. Drugi rzuca wyjątek z błędem typu "Nie można rozwiązać symbolu zastępczego" jabber.host ""
W pewnym sensie rozumiem, na czym polega problem, ale tak naprawdę nie znam rozwiązania - ani najlepszej praktyki dla mojego przypadek użycia.
Jak skonfigurować każdy moduł, aby każdy mógł załadować swój własny plik właściwości? Właśnie teraz przeniosłem PropertyPlaceHolderConfigurer z oddzielnych plików kontekstowych i połączyłem je z kontekstem aplikacji głównej (ładowanie wszystkich plików właściwości za pomocą jednego PropertyPlaceHolderConfigurer). To jest do bani, ponieważ teraz każdy, kto używa modułu dao, musi wiedzieć, że potrzebuje w swoim kontekście obiektu PropertyPlaceHolderConfigurer .. również testy integracyjne w module fail dao itp.
Jestem ciekawy, aby usłyszeć o rozwiązaniach/pomysły ze społeczności stackoverflow ..
+1 do użycia słowa "ssać" :-D –
@PeterWippermann Dlaczego nie śmiały to? : D – Nabin