Spring Boot 2 Jersey实现无法正常工作

时间:2018-07-25 17:04:53

标签: spring-boot jax-rs jersey-2.0

我正在使用Spring Boot 2来使用Jersey来实现REST实现。我无法将Resource类注册为Jersey实施的一部分。我收到了编译器错误。

错误:

编译器错误:JerseyConfig类型的层次结构不一致。

服务/资源代码:

@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代码链接:

https://github.com/sureshpec04/jersey-rest-demo

2 个答案:

答案 0 :(得分:0)

只需将JerseyConfig类名重命名为AppConfig或SomethingConfig。

答案 1 :(得分:0)

JerseyConfig重命名为YourCustomNameConfig,然后pom.xml单击右键maven-> reimport或rebuild。