Jax-rs 注释路径在 java spring 引导中不起作用?
Jax-rs annotation Path is not work in java spring boot?
我有 spring 引导应用程序,起始版本为 2.1.16,并且 spring-boot-starter-web 依赖项。所以,我想使用 javax.ws.rs-api 库,并添加依赖项:
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1.1</version>
</dependency>
因此,当我创建控制器并添加@Path、@Get - 我没有从服务器得到答案(404 未找到)。它是如何工作的?
package com.example.test;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.ext.Provider;
@RestController
public class MyController {
//Doesn't work (404 not found
@GET
@Path("/my_test")
public String check() {
return "hi!";
}
//Work
@RequestMapping("/my_test2")
public String check2() {
return "hi2!";
}
}
在你的pom.xml
中添加以下依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
</dependencies>
如果您使用 spring 启动启动器版本 2.1.16,您通常会有一个父 pom,它也将定义上述依赖项的默认版本。
然后用包 javax.ws.rs.Path
中的 @Path("/")
替换 @RestController
现在它应该可以正常工作了。
请记住您的嵌入式服务器现在将是 jersey
而不是默认的 tomcat
。
编辑:同样从问题的作者那里发现,需要进行另一项更改才能注册 ResourceConfig
。 official documentation.
中也对此进行了描述
除了上面的post,还需要添加配置class:
@Configuration
public class JerseyConfig {
@Bean
public ResourceConfig resourceConfig(MyController myController) {
ResourceConfig config = new ResourceConfig();
config.register(myController);
return config;
}
}
我有 spring 引导应用程序,起始版本为 2.1.16,并且 spring-boot-starter-web 依赖项。所以,我想使用 javax.ws.rs-api 库,并添加依赖项:
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1.1</version>
</dependency>
因此,当我创建控制器并添加@Path、@Get - 我没有从服务器得到答案(404 未找到)。它是如何工作的?
package com.example.test;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.ext.Provider;
@RestController
public class MyController {
//Doesn't work (404 not found
@GET
@Path("/my_test")
public String check() {
return "hi!";
}
//Work
@RequestMapping("/my_test2")
public String check2() {
return "hi2!";
}
}
在你的pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
</dependencies>
如果您使用 spring 启动启动器版本 2.1.16,您通常会有一个父 pom,它也将定义上述依赖项的默认版本。
然后用包 javax.ws.rs.Path
@Path("/")
替换 @RestController
现在它应该可以正常工作了。
请记住您的嵌入式服务器现在将是 jersey
而不是默认的 tomcat
。
编辑:同样从问题的作者那里发现,需要进行另一项更改才能注册 ResourceConfig
。 official documentation.
除了上面的post,还需要添加配置class:
@Configuration
public class JerseyConfig {
@Bean
public ResourceConfig resourceConfig(MyController myController) {
ResourceConfig config = new ResourceConfig();
config.register(myController);
return config;
}
}