欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么使用spring全家桶

這篇文章主要介紹“怎么使用spring全家桶”,在日常操作中,相信很多人在怎么使用spring全家桶問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用spring全家桶”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)專注于黃龍網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供黃龍營銷型網(wǎng)站建設(shè),黃龍網(wǎng)站制作、黃龍網(wǎng)頁設(shè)計(jì)、黃龍網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造黃龍網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供黃龍網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

使用過spring全家桶的都應(yīng)該知道現(xiàn)如今大部分系統(tǒng)對于業(yè)務(wù)邏輯的異常處理,都是基于springmvc的統(tǒng)一異常處理器進(jìn)行攔截包裝后,返回給前端一個(gè)Result(包含code,業(yè)務(wù)異常msg等消息)結(jié)果對象,前端可以根據(jù)code以及msg進(jìn)行友好提示。如下:

  1. 自定義業(yè)務(wù)邏輯異常

/**
 * @author meilin.huang
 * @version 1.0
 * @date 2019-01-05 2:19 PM
 */
public class BusinessRuntimeException extends RuntimeException {

    private static final long serialVersionUID = -789021883759549647L;

    /**
     * 異常碼
     */
    private Integer code;

    public BusinessRuntimeException(String msg) {
        super(msg);
    }

    public BusinessRuntimeException(Integer code, String msg) {
        super(msg);
        this.code = code;
    }

    public Integer getCode() {
        return code;
    }
}
  1. 定義統(tǒng)一異常攔截器

/**
 * @author meilin.huang
 * @version 1.0
 * @date 2018-12-18 11:03 AM
 */
@RestControllerAdvice
public class GlobalExceptionHandler {

    private static Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    @ExceptionHandler(Exception.class)
    public Result handleException(Exception e) {
        if (e instanceof BusinessException || e instanceof BusinessRuntimeException) {
            return Result.error(e.getMessage());
        }
        return Result.serverError();
    }
}
  1. 就可以在業(yè)務(wù)邏輯中隨意拋?zhàn)远x的業(yè)務(wù)邏輯異常

public void updateUser(UserForm userForm) {
  User user = getById(userForm.getId);
  if (user == null) {
    throw new BusinessRuntimeException("不存在該用戶");
  }
  // 校驗(yàn)用戶狀態(tài)枚舉值是否存在,當(dāng)然這也可以通過注解方式在controller層就校驗(yàn)了,這里只是舉例
  if (!EnumUtils.isExist(StatusEnum.values(), userForm.getStatus())) {
    throw new BusinessRuntimeException("狀態(tài)枚舉值錯(cuò)誤");
  }

  // ...........
  //余下可能還有一些其他的業(yè)務(wù)邏輯判斷校驗(yàn),并拋異常的代碼
}

更優(yōu)雅的解決方式

通過上面業(yè)務(wù)判斷可以發(fā)現(xiàn),其實(shí)這些業(yè)務(wù)邏輯的判斷處理,基本都是基于if(...) {throw new BusinessRuntimeException(...)} 于是其實(shí)可以借鑒Spring中的org.springframework.util.Assert斷言類進(jìn)行處理,可以減少大量的if判斷。具體可參考如下:

  1. 首先定義一個(gè)業(yè)務(wù)斷言類

/**
 * 業(yè)務(wù)斷言
 * @author meilin.huang
 * @version 1.0
 * @date 2019-07-14 18:24
 */
public final class BusinessAssert {

    /**
     *  斷言對象不為空
     * @param object    對象
     * @param msg       不滿足斷言的異常信息
     */
    public static void notNull(Object object, String msg) {
        state(object != null, msg);
    }

    public static void notNull(Object object, Supplier<String> supplier) {
        state(object != null, supplier);
    }

    /**
     * 斷言字符串不為空
     * @param str   字符串
     * @param msg   不滿足斷言的異常信息
     */
    public static void notEmpty(String str, String msg) {
        state(!StringUtils.isEmpty(str), msg);
    }

    /**
     * 斷言集合不為空
     * @param collection  集合
     * @param msg         不滿足斷言的異常信息
     */
    public static void notEmpty(Collection<?> collection, String msg) {
        state(!CollectionUtils.isEmpty(collection), msg);
    }

    /**
     * 斷言一個(gè)boolean表達(dá)式
     * @param expression  boolean表達(dá)式
     * @param message     不滿足斷言的異常信息
     */
    public static void state(boolean expression, String message) {
        if (!expression) {
            throw new BusinessRuntimeException(message);
        }
    }

    /**
     * 斷言一個(gè)boolean表達(dá)式,用于需要大量拼接字符串以及一些其他操作等
     * @param expression  boolean表達(dá)式
     * @param supplier    msg生產(chǎn)者
     */
    public static void state(boolean expression, Supplier<String> supplier) {
        if (!expression) {
            throw new BusinessRuntimeException(supplier.get());
        }
    }
}
  1. 于是乎就可以在業(yè)務(wù)邏輯代碼中如下使用啦:

public void updateUser(UserForm userForm) {
  User user = getById(userForm.getId);
  BusinessAssert.notNull(user, "不存在該用戶");
  // 校驗(yàn)用戶狀態(tài)枚舉值是否存在,當(dāng)然這也可以通過注解方式在controller層就校驗(yàn)了,這里只是舉例
  BusinessAssert.state(EnumUtils.isExist(StatusEnum.values(), userForm.getStatus()), "狀態(tài)枚舉值錯(cuò)誤");

  // ...........
  //余下可能還有一些其他的業(yè)務(wù)邏輯判斷校驗(yàn),并拋異常的代碼
}

到此,關(guān)于“怎么使用spring全家桶”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

當(dāng)前文章:怎么使用spring全家桶
分享路徑:http://aaarwkj.com/article18/jegpgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、App開發(fā)、企業(yè)網(wǎng)站制作、網(wǎng)站設(shè)計(jì)公司、小程序開發(fā)、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
亚洲精品日本一区二区| 中文字幕丰满人妻不满中出片| 国产91一区二区三区在线精品| 精品人妻中文字幕一区有码| 神马免费午夜福利剧场| 两性色午夜视频在线观看| 麻豆国产av巨做国产剧情| 男女爱爱视频网站久久精选| 欧美一区二区精品网站| 中文字幕乱码日韩在线| 国产av剧情同事肉体秘密| 亚洲成av人的天堂在线观看女人 | 日本中文字幕三级专区| 国产欧美日韩亚洲综合在线| 欧美日韩一级一区二区| 99热国产这里只有精品| 蜜桃传媒18传媒在线| 中文国产人精品久久蜜桃| 中文字幕一区精品日韩| 午夜激情视频在线网站| 人人妻人人澡人人爽人人精品| 亚洲欧美日韩激情另类| 在线日韩欧美一区二区三区| 亚洲综合五月天色婷婷| 亚洲成av人在线观看福利| 在线青青草视频免费观看| 在线免费观看日韩黄片| 97精品久久九九中文字幕| 久久精品国产av一一区| 91久久精品人妻一区二区| 日本午夜熟女九色视频| 黄色录像三级黄色录像三级黄色| 精品一区二区人妻乱交| 日本人妻成人免费大片| 久久99久久久久久精品| 国产欧美色日韩综合在线| 饥渴少妇高潮特殊按摩| 国产一区免费二区三区四区| 亚洲美女av一区二区三区| 偷拍丝袜美腿亚洲超碰| 少妇高潮时会抱紧男人脖子|