Где поставить @EnableWebMvc? - PullRequest
1 голос
/ 05 мая 2019

Давайте рассмотрим приложение 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 в соответствии с лучшими практиками проектирования программного обеспечения?

...