@0serd0

Покакой причине может не создаваться Spring mvc контроллер, если он содержит java8 default методы?

есть контроллер:
@RestController
@RequestMapping("/docs")
public class SomeController implements Controllable{
      @RequestMapping("/info")
      public ResponseEntity<String> info(){return new ResponseEntity<>("test");}
}
и 
public interface Controllable{
    @RequestMapping("/control", method=POST)
    default ResponseEntity<String> control(){ return new ResponseEntity<>("control"); }
}


Если вызвать любой из этих методов по URL, в тесте через mockMvc.perform(get(...)) то значение будет получено,
а если запустить приложение, то оба метода будут отдавать 404, как будто контроллер не создался, при этом, в логах(при уровне DEBUG) не будет никаких ошибок.
Версия Spring: 4.3.5
  • Вопрос задан
  • 222 просмотра
Решения вопроса 1
jaxtr
@jaxtr
JavaEE/Spring-разработчик
А вообще при запуске приложения появляются сообщения о маппинге запросов, вроде:
s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/docs/info],methods=[GET]}" onto ...
s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/docs/control],methods=[POST]}"  onto ...


Если нет - то у тебя попросту контроллер не существует в контексте приложения. Если да - смотри, куда мапятся запросы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы