我有一个小型的SpringBoot项目,只有很少的RESTful服务,我用它来研究Spring和REST技术。如果我通过spring-boot运行它:运行它在localhost上正常工作:8080 / +我在Controller中的@RequestMapping中编写的内容。例如,在localhost:8080 / restapp / test / {id}:
@RequestMapping(value = "http ://localhost:8080/restapps-0.0.1-SNAPSHOT/restapp/test/{id}",
method = RequestMethod.GET)
public String getWelcome(@PathVariable(value = "id") String id) {
return "Welcome to jax-rs " + id;
}
在完整的Tomcat中部署时,它开始于localhost:8080 / project_version它打开了index.html(我在创建项目时添加了测试)并且我无法访问我的服务。我在尝试:
本地主机:8080 / project_version / restapp /测试/ {ID}
本地主机:8080 / project_version /测试/ {ID}
本地主机:8080 / project_version / PROJECT_NAME / restapp /测试/ {ID}
但只有404错误。
Application.java
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(Application.class, args);
}
}
Controller.java
@RestController
public class Controller extends ApplicationConfig {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
s.add(Controller.class);
return s;
}
@RequestMapping(value = "http ://localhost:8080/restapps-0.0.1-SNAPSHOT/restapp/test/{id}",
method = RequestMethod.GET)
public String getWelcome(@PathVariable(value = "id") String id) {
return "Welcome to jax-rs " + id;
}
}
ApplicationConfig - 空类,它扩展了Application。
Thanx所有建议/答案。
答案 0 :(得分:0)
您的控制器映射不正确,因为控制器 @RequestMapping
value
应该只是相对路径,而不是绝对路径,因此需要更改如下所示:
@RestController
@RequestMapping(value="/test")
public class Controller extends ApplicationConfig {
@RequestMapping(value = "{id}", method = RequestMethod.GET)
public String getWelcome(@PathVariable(value = "id") String id) {
return "Welcome to jax-rs " + id;
}
}
您应该能够使用以下网址(资源ID为1)访问您的Controller方法:
http ://localhost:8080/restapps-0.0.1-SNAPSHOT/test/1
答案 1 :(得分:0)
尝试在Application类中添加@SpringBootApplication或@EnableWebMvc。 然后看 javaguy 的答案。
答案 2 :(得分:0)
通过从SpringBootServletInitializer扩展Application来解决问题。