Spring boot 与RestEasy结合

来源:互联网 发布:阿里云服务器能升级吗 编辑:程序博客网 时间:2024/06/07 05:54

Spring boot 与RestEasy结合

Spring Boot 官方并没有出于RestEasy结合的jar包,估计是应为RestEasy用的比较少吧,但是paypal团队出了一个jar(传送门1),估计他们那边有RestEasy用的比较多吧,PayPal是国际版本的支付宝(传送门2)

首先导包

<dependency>   <groupId>com.paypal.springboot</groupId>   <artifactId>resteasy-spring-boot-starter</artifactId>   <version>2.3.3-RELEASE</version>   <scope>runtime</scope></dependency>

然后定义一个JAX-RS格式的应用类(application 继承javax.ws.rs.core.Application)
然后作为Spring的bean来注册就好了

package com.sample.app;import org.springframework.stereotype.Component;import javax.ws.rs.ApplicationPath;import javax.ws.rs.core.Application;@Component@ApplicationPath("/sample-app/")public class JaxrsApplication extends Application {}````RestEasy 的resources 和providers 只要声明为Spring 的Bean,它就是会自动注册然后在Spring boot的配置文件中配置Application.property文件里面设置 resteasy.jaxrs.app.registration 让他是否自动注册,取值有1. beans 1. property1. scanning1. auto (default)更多信息,[传送门](https://github.com/paypal/resteasy-spring-boot/blob/master/mds/USAGE.md)ReatEasy 校验参数,全局处理返回结果先添加jar包<div class="se-preview-section-delimiter"></div>



org.jboss.resteasy
resteasy-validator-provider-11
3.1.4.Final

这个包主要是将hibernate-validator和RestEasy全局异常处理接口ExceptionMapping结合使用 首先实现全局validator异常处理<div class="se-preview-section-delimiter"></div>

package com.hey900.oa.filter;

import com.hey900.oa.Result;
import org.jboss.resteasy.api.validation.ResteasyConstraintViolation;
import org.jboss.resteasy.api.validation.ResteasyViolationException;
import org.springframework.stereotype.Component;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
import java.util.List;

/**
* Created with IntelliJ IDEA.
* Description:
* UserVO:刘敏华 shadow.liu@hey900.com
* DateDeserializer: 2017-08-08
* Time: 13:44
*/
@Component
@Provider
public class ParamMapping implements ExceptionMapper {

@Overridepublic Response toResponse(ResteasyViolationException  restEasyViolationException ) {    List<ResteasyConstraintViolation> violations = restEasyViolationException.getViolations();    ResteasyConstraintViolation resteasyConstraintViolation = null;    if(violations!=null&&!violations.isEmpty()){        resteasyConstraintViolation = violations.get(0);    }    return Response.ok(Result.fail(resteasyConstraintViolation.getMessage()), MediaType.APPLICATION_JSON_TYPE).build();}

}

然后使用<div class="se-preview-section-delimiter"></div>

/**
* Created with IntelliJ IDEA.
* Description:
* UserVO:刘敏华 shadow.liu@hey900.com
* DateDeserializer: 2017-08-08
* Time: 14:18
*/
public class UserParam {

@NotNull(message = "用户名不能为空")private String name;@Pattern(regexp = "^[a-zA-Z0-9_.-]+@hey900.com",message = "请输入正确的公司邮箱")@ApiModelProperty("员工邮箱")private String email;@NotNull(message = "手机号不能为空")@Size(min = 11,max=11,message = "请填写合法的手机号")private String phone;@NotNull(message = "登录密码不能为空")@Size(min = 6,max=20,message = "密码长度需要再6~20位字符之间")private String password;@NotNull(message = "入职日期不能为空")@JsonDeserialize(using = DateDeserializer.class)private Date entryDate;@NotNull(message = "转正日期不能为空")@JsonDeserialize(using = DateDeserializer.class)private Date regularDate;@JsonDeserialize(using = DateDeserializer.class)private Date leaveDate;
在Api里面校验<div class="se-preview-section-delimiter"></div>
@Secured(resource = "user.add",name = "新增用户")@POST@Path("/add")@ApiOperation("用户增加接口")public Result<UserVO> add(@Valid UserParam userParam){    return userService.add(userParam);}

“`

原创粉丝点击