最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot 實(shí)現(xiàn)Restful webservice服務(wù)端示例代碼

 更新時間:2017年11月16日 10:32:18   投稿:mrr  
這篇文章主要介紹了Spring Boot 實(shí)現(xiàn)Restful webservice服務(wù)端示例代碼,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下

1.Spring Boot configurations

application.yml
spring:
 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 
 */
@SpringBootApplication
public 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
@Component
public 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());
  // 參數(shù)
  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 
 */
@ControllerAdvice
public 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.代碼下載、編譯、打包

代碼下載請?jiān)L問 GitHub上的 witpool/Wit-Neptune

導(dǎo)入工程文件、編譯、打包步驟如下:

Eclipse 導(dǎo)入maven工程

導(dǎo)入Maven工程

導(dǎo)入Maven工程

Maven打包

Maven install打包

生成的JAR包

8.啟動和UT步驟

啟動應(yīng)用:java -jar wit-rest-1.0.jar

啟動應(yīng)用

UT步驟:

(1). 下載WisdomTool REST Client

(2). 雙擊 JAR包 restclient-1.1.jar 啟動工具

導(dǎo)入測試用例文件:

WisdomTool RESTClient

關(guān)于WisdomTool REST Client更多的使用幫助,請參考GitHub wisdomtool/rest-client

總結(jié)

以上所述是小編給大家介紹的Spring Boot 實(shí)現(xiàn)Restful webservice服務(wù)端示例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 基于java socket實(shí)現(xiàn) 聊天小程序

    基于java socket實(shí)現(xiàn) 聊天小程序

    這篇文章主要介紹了基于java socket實(shí)現(xiàn) 聊天小程序,代碼分為服務(wù)器和客戶端,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • SpringBoot實(shí)現(xiàn)國密SM4加密解密的使用示例

    SpringBoot實(shí)現(xiàn)國密SM4加密解密的使用示例

    在商用密碼體系中,SM4主要用于數(shù)據(jù)加密,本文就來介紹一下SpringBoot實(shí)現(xiàn)國密SM4加密解密的使用示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • 解決mybatisPlus 中的field-strategy配置失效問題

    解決mybatisPlus 中的field-strategy配置失效問題

    這篇文章主要介紹了解決mybatisPlus 中的field-strategy配置失效問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 解讀tk.mybatis的通用批量更新方式

    解讀tk.mybatis的通用批量更新方式

    這篇文章主要介紹了關(guān)于tk.mybatis的通用批量更新方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java開發(fā)環(huán)境不再需要配置classpath問題

    Java開發(fā)環(huán)境不再需要配置classpath問題

    這篇文章主要介紹了Java開發(fā)環(huán)境不再需要配置classpath問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Java壓縮解壓縮工具類

    Java壓縮解壓縮工具類

    這篇文章主要為大家詳細(xì)介紹了Java壓縮解壓縮工具類,如何壓縮單個文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • java.math.BigDecimal的用法及加減乘除計(jì)算

    java.math.BigDecimal的用法及加減乘除計(jì)算

    這篇文章主要介紹了java.math.BigDecimal的用法及加減乘除計(jì)算,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • SpringBoot服務(wù)監(jiān)控機(jī)制原理解析(面試官常問)

    SpringBoot服務(wù)監(jiān)控機(jī)制原理解析(面試官常問)

    這篇文章主要介紹了SpringBoot服務(wù)監(jiān)控機(jī)制原理解析(面試官常問),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java基于Dijkstra算法實(shí)現(xiàn)校園導(dǎo)游程序

    Java基于Dijkstra算法實(shí)現(xiàn)校園導(dǎo)游程序

    這篇文章主要為大家詳細(xì)介紹了Java基于Dijkstra算法實(shí)現(xiàn)校園導(dǎo)游程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Spring Cloud 整合Apache-SkyWalking實(shí)現(xiàn)鏈路跟蹤的方法

    Spring Cloud 整合Apache-SkyWalking實(shí)現(xiàn)鏈路跟蹤的方法

    這篇文章主要介紹了Spring Cloud 整合Apache-SkyWalking鏈路跟蹤的示例代碼,代碼簡單易懂,通過圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評論

腾冲县| 德阳市| 连南| 黑山县| 游戏| 郎溪县| 巴塘县| 沁阳市| 富民县| 平乡县| 浪卡子县| 吕梁市| 金溪县| 阳朔县| 乐都县| 大同县| 富裕县| 顺昌县| 无锡市| 桐梓县| 内江市| 靖西县| 巴南区| 正阳县| 南靖县| 梨树县| 泰来县| 河池市| 赤峰市| 鄂温| 崇礼县| 安多县| 苍溪县| 东港市| 新乡市| 集安市| 西华县| 海兴县| 四川省| 乌审旗| 淄博市|