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 1Patrzą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}")