2016-03-10 3 views
1

AppInitailizer.javaОшибка Spring MVC 4.3 404. Проблема с отображением пути. Servlet Mapping и конфигурация выглядит хорошо

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{ 

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

@Override 
protected Class<?>[] getServletConfigClasses() { 
    return null; 
} 

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

}

AppConfig.java

@Configuration 
@ComponentScan 
@EnableWebMvc 
public class AppConfig { 

} 

UserController.java

@RestController 
@RequestMapping("/users") 
public class UserController { 

    @Autowired 
    private UserService userService; 


    @RequestMapping(method = RequestMethod.GET) 
    public List<User> getUsers(){ 
     List<User> users = userService.findAll(); 
     return users; 
    } 

Когда я попытался выстрелить http://localhost:8080/practise/api/users, это приводит к «HTTP St atus 404 "-/practice/api/users (где практика - название проекта). В getServletMappings() я дал путь как/api/*, а класс UserController имеет сопоставление запросов как/users. Я не знаю, где я ошибся. Когда я обращаюсь к index.xml, он работает нормально.

Скриншот ошибки:

Error on the browser when I try to access the api of application

+0

Когда огонь URL в журналах tomcat нет ошибки, поскольку для данного URL-адреса нет сопоставления. Я попытался напечатать заявление getRootConfigClasses(), getServletMappings(). В журналах также отсутствует инструкция печати. Поэтому я предполагаю, что конфигурация весеннего mvc может быть неправильной. Но как я мог понять это? –

ответ

0

вы должны использовать значение атрибута в Requestmapping как @RequestMapping (значение = "пользователей", метод = RequestMethod.GET)

+0

-> Я дал @RequestMapping ("/ users") класс UserController. Поскольку RequestMapping является иерархическим, он применяется к функции getUsers(). Пожалуйста, поправьте меня, если я ошибаюсь. –

+0

Да, вы правы, но чтобы различать, какой метод должен обрабатывать запрос, вы должны дать @RequestMapping (value = «something»), и вам нужно позвонить по всему URL-адресу, например, к вашему пути/пользователям/чему-то. I подумайте, что это сработает для вас –