2013-06-15 9 views
6

Przeglądając źródła naszych aplikacji, znalazłem wspólny kontroler Spring MVC, który wyświetla kilka razy klucz i wartości konfiguracji skopiowane i wklejone. Definicje klas są dokładnie takie same, z wyjątkiem wartości RequestMapping, ponieważ każda aplikacja chce mieć tę stronę dostępną pod różnymi adresami URL.Zastępowanie żądania mapowania na kontrolerze SpringMVC

Chcę przenieść ten kontroler do wspólnej biblioteki i podać domyślną wartość RequestMapping.

@Controller 
@RequestMapping (value="/property") 
public class CommonPropertyController { 
    .... 
} 

W jaki sposób każda aplikacja zastąpi tę wartość, jeśli chce używać własnego wzorca URL?

Odpowiedz

11

Patrząc na kod źródłowy, wpadłem na pomysł, jak to zrobić, bez konieczności wracania do definicji obsługi ręcznej (pre-adnotacja) (która jest również sposobem implementacji tego, czego potrzebujesz).

Sprężyna pozwala używać konfiguratorów symboli zastępczych właściwości w wartościach @RequestMapping. Więc to jest możliwe wykorzystanie tego faktu i zdefiniować @RequestMapping jak:

@Controller 
@RequestMapping("${routing.property.path}") 
public class CommonPropertyController { 
    .... 
} 

Następnie można po prostu określić PropertySourcesPlaceholderConfigurer z odpowiednimi właściwościami w swoim kontekście aplikacji i jesteś dobry, aby przejść.


UPDATE Można także określić wartość domyślną za pomocą właściwości zastępczy jeśli chcesz mieć awaryjnej odwzorowania w przypadku, gdy nieruchomość nie jest speciefied:

@RequestMapping("${routing.property.path:/property}") 
+0

Wow to jest niesamowite! – ltfishie

+0

Ma to dodatkową zaletę wyłączenia kontrolera, jeśli właściwość nie jest obecna. Dokładnie tego, czego szukam. – ltfishie

+0

Nie jestem pewien, czy będziesz w stanie wyłączyć kontroler w ten sposób. Zostanie zmapowany do samego obiektu zastępczego lub może pojawić się błąd dotyczący nierozwiązanej właściwości ... Btw. Zauważyłem również, że zachowanie zastępcze jest wymienione w '@ RequestMapping' JavaDoc :) –

Powiązane problemy