首页 > 编程 > Java > 正文

Spring Boot 实现Restful webservice服务端示例代码

2019-11-26 10:55:17
字体:
来源:转载
供稿:网友

1.Spring Boot configurations

application.ymlspring: profiles: active: dev mvc: favicon:  enabled: false datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/wit_neptune?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true username: root password: 123456 jpa: hibernate:  ddl-auto: update show-sql: true

2.Spring Boot Application

WitApp.java/*  * Copyright 2016-2017 WitPool.org All Rights Reserved. *  * You may not use this file except in compliance with the License. * A copy of the License is located at * http://www.witpool.org/licenses *  * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */package org.witpool;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/**  * @ClassName: WitApp  * @Description: WitPool Application  * @author Dom Wang  * @date 2017-11-15 AM 11:21:55  * @version 1.0  */@SpringBootApplicationpublic class WitApp{ public static void main(String[] args) {  SpringApplication.run(WitApp.class, args); }}

3.Rest Controller

WitUserRest.java/*  * Copyright 2016-2017 WitPool.org All Rights Reserved. *  * You may not use this file except in compliance with the License. * A copy of the License is located at * http://www.witpool.org/licenses *  * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */package org.witpool.rest;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.DeleteMapping;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.PutMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.witpool.common.enums.WitCode;import org.witpool.common.model.bean.WitResult;import org.witpool.common.model.po.WitUser;import org.witpool.common.util.WitUtil;import org.witpool.persist.WitRepository;import org.witpool.service.WitService;/** * @Class Name : WitUserRest * @Description: WitPool User Rest * @Author  : Dom Wang * @Email  : witpool@outlook.com  * @Date  : 2017-11-15 PM 2:50:27  * @Version : 1.0 */@RestController@RequestMapping("/users")public class WitUserRest{ private final static Logger log = LoggerFactory.getLogger(WitUserRest.class); @Autowired private WitRepository reposit; @Autowired private WitService service; /** *  * @Title: addUser  * @Description: Add one user  * @param @param user * @param @return  * @return WitResult<WitUser> * @throws  */ @PostMapping public WitResult<WitUser> addUser(@RequestBody WitUser user) {  return WitUtil.success(reposit.save(user)); } /** *  * @Title: addUsers  * @Description: Add users by specified number * @param @param num * @param @return  * @return WitResult<WitUser> * @throws  */ @PostMapping(value = "/{number}") public WitResult<WitUser> addUsers(@PathVariable("number") Integer num) {  if (num < 0 || num > 10)  {   log.error("The number should be [0, 10]");   return WitUtil.failure(WitCode.WIT_ERR_INVALID_PARAM);  }  return WitUtil.success(service.addUsers(num)); } /** *  * @Title: updateUser  * @Description: Update user  * @param @param user * @param @return  * @return WitResult<WitUser> * @throws  */ @PutMapping public WitResult<WitUser> updateUser(@RequestBody WitUser user) {  return WitUtil.success(reposit.save(user)); } /** *  * @Title: deleteUser  * @Description: delete user by ID  * @param @param userId * @param @return  * @return WitResult<WitUser> * @throws  */ @DeleteMapping(value = "/{userId}") public WitResult<WitUser> deleteUser(@PathVariable("userId") Integer userId) {  reposit.delete(userId);  return WitUtil.success(); } /** *  * @Title: getUserByID  * @Description: Get user by ID  * @param @param userId * @param @return  * @return WitResult<WitUser> * @throws  */ @GetMapping(value = "/{userId}") public WitResult<WitUser> getUserByID(@PathVariable("userId") Integer userId) {  return WitUtil.success(reposit.findOne(userId)); } /** *  * @Title: getUserByName  * @Description: Get user by name  * @param @param userName * @param @return  * @return WitResult<WitUser> * @throws  */ @GetMapping(value = "/name/{userName}") public WitResult<WitUser> getUserByName(@PathVariable("userName") String userName) {  return WitUtil.success(reposit.findByUserName(userName)); } /** *  * @Title: getUsers  * @Description: Get all users  * @param @return  * @return WitResult<WitUser> * @throws  */ @GetMapping public WitResult<WitUser> getUsers() {  return WitUtil.success(reposit.findAll()); }}

4.Aspect

WitAspect.java/*  * Copyright 2016-2017 WitPool.org All Rights Reserved. *  * You may not use this file except in compliance with the License. * A copy of the License is located at * http://www.witpool.org/licenses *  * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */package org.witpool.common.aspect;import javax.servlet.http.HttpServletRequest;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;/**  * @ClassName: WitAspect  * @Description: WitPool Http Aspect  * @author Dom Wang  * @date 2017-11-15 PM 3:36:38  * @version 1.0  */@Aspect@Componentpublic class WitAspect { private final static Logger log = LoggerFactory.getLogger(WitAspect.class); @Pointcut("execution(public * org.witpool.rest.WitUserRest.*(..))") public void log() { } @Before("log()") public void doBefore(JoinPoint jp) {  ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();  HttpServletRequest req = attr.getRequest();  // URL  log.info("WIT: URL={}", req.getRequestURL());  // Method  log.info("WIT: HTTP Method={}", req.getMethod());  // IP  log.info("WIT: IP={}", req.getRemoteAddr());  // 类方法  log.info("WIT: REST CLASS={}", jp.getSignature().getDeclaringTypeName() + "." + jp.getSignature().getName());  // 参数  log.info("WIT: ARGS={}", jp.getArgs()); } @After("log()") public void doAfter() {  log.info("WIT: do after"); } @AfterReturning(returning = "obj", pointcut = "log()") public void doAfterReturning(Object obj) {  log.info("WIT: RESPONSE={}", obj.toString()); }}

5.Controller Advice

WitExceptHandle.java/*  * Copyright 2016-2017 WitPool.org All Rights Reserved. *  * You may not use this file except in compliance with the License. * A copy of the License is located at * http://www.witpool.org/licenses *  * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */package org.witpool.common.handle;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody;import org.witpool.common.enums.WitCode;import org.witpool.common.except.WitException;import org.witpool.common.model.bean.WitResult;/**  * @class name: WitExceptHandle  * @description: WitPool Result  * @author Dom Wang  * @date 2017-11-15 PM 3:46:14  * @version 1.0  */@ControllerAdvicepublic class WitExceptHandle{ private final static Logger logger = LoggerFactory.getLogger(WitExceptHandle.class); @ExceptionHandler(value = Exception.class) @ResponseBody public WitResult handle(Exception e) {  if (e instanceof WitException)  {   WitException we = (WitException) e;   return new WitResult(we.getCode(), we.getMessage());  }  else  {   logger.error(WitCode.WIT_ERR_INNER.getMsg() + "{}", e);   return new WitResult(WitCode.WIT_ERR_INNER.getCode(), e.getMessage());  } }}

6.Jpa Repository

WitRepository.java/*  * Copyright 2016-2017 WitPool.org All Rights Reserved. *  * You may not use this file except in compliance with the License. * A copy of the License is located at * http://www.witpool.org/licenses *  * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */package org.witpool.persist;import java.util.List;import org.springframework.data.jpa.repository.JpaRepository;import org.witpool.common.model.po.WitUser;/** * @Class Name : WitRepository * @Description: WitPool Repository * @Author  : Dom Wang * @Email  : witpool@outlook.com  * @Date  : 2017-11-15 PM 2:50:27  * @Version : 1.0 */public interface WitRepository extends JpaRepository<WitUser, Integer>{ public List<WitUser> findByUserName(String userName);}

7.代码下载、编译、打包

代码下载请访问 GitHub上的 witpool/Wit-Neptune

导入工程文件、编译、打包步骤如下:

Eclipse 导入maven工程

导入Maven工程

导入Maven工程

Maven打包

Maven install打包

生成的JAR包

8.启动和UT步骤

启动应用:java -jar wit-rest-1.0.jar

启动应用

UT步骤:

(1). 下载WisdomTool REST Client

(2). 双击 JAR包 restclient-1.1.jar 启动工具

导入测试用例文件:

WisdomTool RESTClient

关于WisdomTool REST Client更多的使用帮助,请参考GitHub wisdomtool/rest-client

总结

以上所述是小编给大家介绍的Spring Boot 实现Restful webservice服务端示例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表