Задать вопрос
@parkito

Почему могут запускаться эндпоинты только из одного рест-контроллера?

Здравствуйте. Помогите, пожалуйста, решить следующую проблему.

Пишу RESTFul приложение на спринге.

Вот так настроил web-конфиг

public class AppInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext container) throws ServletException {

        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(AppConfig.class);
        ctx.setServletContext(container);

        ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx));

        servlet.setLoadOnStartup(1);
        servlet.addMapping("/");
    }
}


Теперь создаю два рест-контроллера

@RestController
public class MainRestController {
    static final Logger log = LogManager.getLogger(MainRestController.class);

    @Autowired
    private UserService userService;

    @Autowired
    private GroupService groupService;

    @Autowired
    private RoomService roomService;

    @Autowired
    private UserEntityToUserDTO userEntityToUserDTO;

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String homePage() {
        return "index";
    }

.....


и

@RestController
public class UserController {
    private static Logger logger = LogManager.getLogger(UserController.class);

    @Autowired
    UserService userService;

    @Autowired
    UserEntityToUserDTO userToUserDTO;

    @Autowired
    UserDTOtoUserEntity userDTOtoUser;

    @Autowired
    GroupService groupService;

    @RequestMapping(value = "/getUserByCredentials", method = RequestMethod.GET)
    public ResponseEntity<UserDTO> getUserByCredentials(HttpServletRequest req,
                                                        @RequestParam(value = "email") String email,
                                                        @RequestParam(value = "password") String password) {

....


Проблема заключается в том, что я имею доступ к адресам, которые замаплены в MainRestController , все что есть в UserController не видится (404). Я не понимаю, чем контроллеры отличаются. И почему один работает, а другой игнорится.

UPD

@Configuration
@Import({JpaConfig.class,
        BaseControlRestConfig.class,
        AppInitializer.class})
@ComponentScan(basePackages = "com.roommate.basecontrol")
@EnableWebMvc
public class AppConfig  {


}


@Configuration
@ComponentScan(value = "com.roommate.basecontrol.controllers.restControllers")
@Import({BaseControlServiceConfig.class,
        BaseControlModelConfig.class})
public class BaseControlRestConfig {
    @Bean
    public RequestContextListener requestContextListener() {
        return new RequestContextListener();
    }
}
  • Вопрос задан
  • 208 просмотров
Подписаться 1 Оценить 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

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