Guice,Jetty,Jersey + Jackson BIG PLUS:Bean验证

时间:2015-10-12 04:36:27

标签: java rest guice bean-validation jersey-2.0

我在我的堆栈中使用guice,jetty,jersey + jackson运行一个安静的应用程序。它运作得很好。

然后,我尝试添加Jersey的Bean验证,但我没有错误,没有警告......并且没有验证。我读了很多文章,但没有这些文章帮助了我。

这是我的JerseyConfigModule:

public class JerseyConfigModule extends ServletModule {
    @Override
    protected void configureServlets() {
        Map<String, String> initParams = new HashMap<String, String>();
        initParams.put("com.sun.jersey.api.json.POJOMappingFeature", "true");

        bind(GuiceContainer.class);

        Set<Class<?>> classes=new ResourceConfig().property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE,true).getClasses();
        for (Class<?> aClass : classes) {
            bind(aClass);
        }

        serve("/rest/*").with(GuiceContainer.class, initParams);
    }
}

我的泽西岛资源:

@Path("/user")
public class UserResource {
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public Response post(@Valid StoreUserDTO user){
    }
}

在另一个Guice模块中,我绑定了这个资源:

bind(UserResource.class);

参数中使用的Bean:

public class StoreUserDTO {
    @NotNull
    private String name;
    @NotNull
    private String email;

    public String getName() {
        return name;
    }

    public String getEmail() {
        return email;
    }
}

我使用jersey-guice和glassfish的泽西豆验证(我想要这个):

    <dependency>
        <groupId>com.sun.jersey.contribs</groupId>
        <artifactId>jersey-guice</artifactId>
        <version>1.19</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.ext</groupId>
        <artifactId>jersey-bean-validation</artifactId>
        <version>2.22.1</version>
    </dependency>

我忘记了什么?我发现很多例子都没有用,或者不适用于泽西岛2,仅仅是1。

是的,我知道Jersey正式支持bean验证,但在官方文档中,我没有找到任何关于如何与Guice集成的信息。

0 个答案:

没有答案