实现webservice的接口

时间:2016-08-06 16:21:59

标签: java web-services rest maven

我有一个使用REST创建CRUD Web服务的maven项目。 如果我用这个:

@GET
@Path("/getallfornecedores")
@Produces("application/json;")
public Fornecedor getAllFornecedores(){
    Fornecedor f = new Fornecedor();
    f.setName("Bruno");
    return f;
}

我的代码运行正常。但是我想使用接口实现,所以我这样做了:

private ICrud crud;

@GET
@Path("/getallfornecedores")
@Produces("application/json;")
public Fornecedor getAllFornecedores(){
    return crud.getAllFornecedores();
}

界面:

public interface ICrud {
    public Fornecedor getAllFornecedores();
}

实施:

public class Crud implements ICrud{ 
    public Fornecedor getAllFornecedores(){
        Fornecedor fornecedor = new Fornecedor();
        fornecedor.setId(1);
        fornecedor.setName("Bruno");
        fornecedor.setEmail("bruno.camargo_@outlook.com");
        fornecedor.setComment("OK");

        return fornecedor;
    }
}

但是当我这样做时,我收到以下错误:

  The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
  java.lang.NullPointerException

为什么会这样?提前致谢

2 个答案:

答案 0 :(得分:1)

你需要创建icrud对象来传递

试试这个

public interface ICrud {
    public Fornecedor getAllFornecedores();
}

public class Crud implements ICrud{ 
    public Fornecedor getAllFornecedores(){
        Fornecedor fornecedor = new Fornecedor();
        fornecedor.setId(1);
        fornecedor.setName("Bruno");
        fornecedor.setEmail("bruno.camargo_@outlook.com");
        fornecedor.setComment("OK");

        return fornecedor;
    }
}

public class Controller { 


private ICrud crud = new Crud();


@GET
@Path("/getallfornecedores")
@Produces("application/json;")
public Fornecedor getAllFornecedores(){
    return crud.getAllFornecedores();
}

}

答案 1 :(得分:0)

谢谢mithat konuk。该解决方案实例化了与实现的接口。