Spring Boot 2 Jersey 实现不工作
Spring Boot 2 Jersey Implementation not working
我正在使用 Spring Boot 2 来使用 Jersey 实现 REST 实现。我无法将资源 class 注册为 Jersey 实施的一部分。我收到编译器错误。
错误:
编译器错误:JerseyConfig 类型的层次结构不一致。
Service/Resource代码:
@Service
@Path("/api/v1")
public class PersonResource {
private final PersonRepository personRepo;
@Autowired
public PersonResource(PersonRepository personRepo) {
this.personRepo = personRepo;
}
@GET
@Path( "/persons")
@Produces("application/json")
public List<Person> getAllPerson(){
List<Person> persons = personRepo.findAll();
return persons;
}
@GET
@Path( "/persons/{id}")
@Produces("application/json")
public Response findPersonById(@PathParam("id") String id) throws NumberFormatException, Exception{
Person person = personRepo.findById(Long.valueOf(id)).orElseThrow( () -> new Exception("Unable to find a person with id: " + id));
return Response.ok(person, MediaType.APPLICATION_JSON).build();
}
配置:
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import com.example.demo.rest.PersonResource;
@Component
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
register(PersonResource.class);
}
}
Maven 依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
我不确定我在配置方面缺少什么。任何有助于解决此问题的指示都将受到赞赏。
GitHub代码link:
只需将 JerseyConfig
class 名称重命名为 AppConfig
或 SomethingConfig。
将 JerseyConfig
重命名为 YourCustomNameConfig
并 pom.xml
单击右键 maven->reimport or rebuild 。
我正在使用 Spring Boot 2 来使用 Jersey 实现 REST 实现。我无法将资源 class 注册为 Jersey 实施的一部分。我收到编译器错误。
错误:
编译器错误:JerseyConfig 类型的层次结构不一致。
Service/Resource代码:
@Service
@Path("/api/v1")
public class PersonResource {
private final PersonRepository personRepo;
@Autowired
public PersonResource(PersonRepository personRepo) {
this.personRepo = personRepo;
}
@GET
@Path( "/persons")
@Produces("application/json")
public List<Person> getAllPerson(){
List<Person> persons = personRepo.findAll();
return persons;
}
@GET
@Path( "/persons/{id}")
@Produces("application/json")
public Response findPersonById(@PathParam("id") String id) throws NumberFormatException, Exception{
Person person = personRepo.findById(Long.valueOf(id)).orElseThrow( () -> new Exception("Unable to find a person with id: " + id));
return Response.ok(person, MediaType.APPLICATION_JSON).build();
}
配置:
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import com.example.demo.rest.PersonResource;
@Component
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
register(PersonResource.class);
}
}
Maven 依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
我不确定我在配置方面缺少什么。任何有助于解决此问题的指示都将受到赞赏。
GitHub代码link:
只需将 JerseyConfig
class 名称重命名为 AppConfig
或 SomethingConfig。
将 JerseyConfig
重命名为 YourCustomNameConfig
并 pom.xml
单击右键 maven->reimport or rebuild 。