IllegalArgumentException: найдено более одного фрагмента с именем [spring_web] - PullRequest
1 голос
/ 27 июня 2019

Я изучаю Spring MVC, и у меня есть простое веб-приложение, использующее xml. И приложение работает отлично. После этого я попытался сделать то же самое приложение только с кодом Java (без xml). Поэтому я создал новое веб-приложение, удалил web.xml и еще один XML-файл и добавил 2 класса для настройки.

Вот первый класс для настройки:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.dgs.springdemo")
public class DemoAppConfig {

    // define a bean for ViewResolver

    @Bean
    public ViewResolver viewResolver() {

        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();

        viewResolver.setPrefix("/WEB-INF/view/");
        viewResolver.setSuffix(".jsp");

        return viewResolver;
    }

}

2-й класс:

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class MySpringMvcDispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { DemoAppConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

}

И если я запускаю приложение, я получаю эту ошибку: «Сервер Tomcat v9.0 Сервер на локальном хосте не запускается».

И я получаю это сообщение в консоли:

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/spring-mvc-java-code]]

...

Caused by: java.lang.IllegalArgumentException: More than one fragment with the name [spring_web] was found. This is not legal with relative ordering. See section 8.2.2 2c of the Servlet specification for details. Consider using absolute ordering.

Я искал в Интернете решение и вижу, что мне нужно добавить <absolute-ordering/> в web.xml. Но у меня нет web.xml, потому что я использую только код Java (без XML). Также я не использую Maven. Пожалуйста, помогите мне. Любые отзывы будут оценены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...