我无法设法让简单的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
我做错了什么?
答案 0 :(得分:0)
您在控制器类级别和方法级别上有一个注释,因此您的网址必须为/index/index
。