Spring最小REST404获取请求

时间:2017-03-21 12:30:10

标签: rest spring-mvc

我无法设法让简单的REST服务正常运行。据我所知的众多例子而言,我只需要在满足jackson依赖性的同时返回POJO,以便在客户端获得json响应。

我使用IntelliJ Idea(EE)作为我的IDE,使用tomcat7作为Web服务器。 Tomcat日志注册部署,IDE中的facets配置与我已完成的其他非静态工作示例相同。从我的浏览器调用/ index映射时,Tomcat访问日志给出了这个错误:

127.0.0.1 - - [21/Mar/2017:13:10:45 +0100] "GET /index HTTP/1.1" 404 949

这是REST控制器的代码(它记录为错误,所以我不会错过它):

@RestController
@RequestMapping("/index")
public class HomeController {

  private static final Logger log = LoggerFactory.getLogger(HomeController.class.getName());

  @Autowired
  MessageSource messageSource;


  @GetMapping(value = "/index")
  public TestObj greeting(){
  //public TestObj greeting(@RequestParam(value ="numbers", required = false, defaultValue = "0") int numbers){

    log.error("request logged");

    TestObj testObj = new TestObj();
    testObj.setLetters("letters");
    testObj.setNumber(0);

    return testObj;
  }

}

Servlet初始化程序:

package com.javalearning.simbus.config;


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

public class AppInitializer extends
    AbstractAnnotationConfigDispatcherServletInitializer {

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

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

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

}

应用程序上下文配置代码(我显然已尝试使用未注释的代码,但我仍然不完全理解它):

@EnableWebMvc
@Configuration
@ComponentScan(basePackages = "com.javalearning.simbus" )
public class WebConfig extends WebMvcConfigurerAdapter {

  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**")
        .addResourceLocations("/resources/");
  }
/*
  @Bean
  public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver
        = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setPrefix("/WEB-INF/pages/");
    viewResolver.setSuffix(".jsp");
    return viewResolver;
  }
*/
  @Bean
  public MessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("messages");
    return messageSource;
  }
}

目录结构:

src/main/java/
└── com
    └── javalearning
        └── simbus
            ├── config
            │   ├── AppInitializer.java
            │   └── WebConfig.java
            ├── controller
            │   └── HomeController.java
            └── domain
                └── TestObj.java

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您在控制器类级别和方法级别上有一个注释,因此您的网址必须为/index/index