Давайте рассмотрим приложение Spring Boot, которое имеет веб-модуль (или несколько) в качестве зависимости.
Приложение не использует автоконфигурацию (по причине), и артефакт веб-модуля имеет видSpring-Boot-free.
В отношении такой структуры приложения я бы ожидал, что аннотация @EnableWebMvc
в коде приложения будет выглядеть следующим образом:
@SpringBootConfiguration
@EnableWebMvc
public class MyApplication {
public static void main(String[] args) {
...
Для центральной точки контроля.
Если я добавлю аннотацию @EnableWebMvc
в код веб-модуля, этот модуль может оказать влияние на все приложение - например, когда приложение приносит свою собственную веб-конфигурацию WebMvcConfigurationSupport
и т. Д. Элемент управления будетбыть снизу вверх, и поведение станет непредсказуемым с точки зрения приложения.
Тем не менее почти во всех примерах @EnableWebMvc
относится к определенным классам конфигурации.Даже в официальной документации можно найти такие фрагменты кода:
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
...
Как правильно разместить аннотацию @EnableWebMvc
в соответствии с лучшими практиками проектирования программного обеспечения?