Spring Boot не разрешает вид - PullRequest
       29

Spring Boot не разрешает вид

0 голосов
/ 08 апреля 2020

Я пытаюсь создать простой контроллер с Spring Boot Congifuration:

@Configuration
@EnableWebMvc
@ComponentScan (basePackages = { "ru.spb.chat.controller" })
public class WebConfig implements WebMvcConfigurer {

   @Bean
    public ViewResolver viewResolver() {
       InternalResourceViewResolver bean = new InternalResourceViewResolver();
       bean.setPrefix("/WEB-INF/view/");
       bean.setSuffix(".html");
       return bean;
     }
}

и для сервлета:

 public class MainWebAppInitializer implements WebApplicationInitializer {
   @Override
   public void onStartup(final ServletContext sc) throws ServletException {

       AnnotationConfigWebApplicationContext root =
               new AnnotationConfigWebApplicationContext();

       root.scan("ru.spb");
       sc.addListener(new ContextLoaderListener(root));

       ServletRegistration.Dynamic appServlet =
            sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext()));
       appServlet.setLoadOnStartup(1);
       appServlet.addMapping("/");
    }

}

Мой контроллер.

 @Controller
 public class RootController {

    @GetMapping ("/")
    public String root() {
         return "login";
    }
}

Но когда я пытаюсь отобразить на "/", он возвращает 404-ОШИБКА Это моя структура проекта: structure

1 Ответ

0 голосов
/ 08 апреля 2020

Удалите WebConfig и удалите ServletInitializer и MainWebAppInitializer. (Вы также можете удалить WebSocketConfig и использовать автоконфигурацию из Spring Boot!).

Позвольте вашему ChatApplication расширить SpringBootServletInitializer и реализовать метод configure.

@SpringBootApplication
public class ChatApplication extends SpringBootServletInitializer {

  public static void main(String[] args) {
    SpringApplication.run(ChatApplication.class, args);
  }

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources(ChatApplication.class);
  } 

}

Затем в application.properties добавьте

spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.html

Теперь вы используете правильную автоконфигурацию Spring Boot И правильный способ создания WAR, который является исполняемым.

При этом, как правило, вам не нужна WAR (только если вы используете JSP, который не рекомендуется во встроенных контейнерах).

...