/ / Przesłanianie RequestMapping na kontrolerze SpringMVC - spring-mvc

Przesłanianie RequestMapping na kontrolerze SpringMVC - spring-mvc

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.

Chcę przenieść ten kontroler do wspólnej biblioteki i zapewnić 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?

Odpowiedzi:

11 dla odpowiedzi nr 1

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).

Spring umożliwia korzystanie z konfiguratorów symboli zastępczych właściwości @RequestMapping wartości. Tak więc można to wykorzystać i zdefiniować @RequestMapping lubić:

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

Następnie możesz po prostu zdefiniować PropertySourcesPlaceholderConfigurer z właściwymi właściwościami w kontekście aplikacji i możesz jechać.


AKTUALIZACJA Możesz również określić wartość domyślną za pomocą symbolu zastępczego właściwości, jeśli chcesz mieć mapowanie zastępcze w przypadku, gdy właściwość nie jest określona:

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