代碼臃腫

lombok 描述
lombok 消除 POJO 冗長
validator 描述
validator 校驗框架
mapstruct 描述
mapstruct 映射框架
@Data
public class User {
    public String name;
    public Integer age;
}

@Data
public class Person {
    public String PersonName;
    public Integer PersonAge;
}

@Mapper
public interface PersonToUser {

    PersonToUser MAPPER = Mappers.getMapper(PersonToUser.class);

    @Mappings({ 
        @Mapping(target = "name", source = "PersonName"),
        @Mapping(target = "age", source = "PersonAge")
    })
    
    User personToUser(User user);

}

public static void main(String[] args) {
        
        User user = new User();
        user.setName("xx");
        user.setAge(18);
        
        User u = PersonToUser.MAPPER.personToUser(user);
        System.out.println(u);
    }
自定義注解 描述
@Target @Target表示 Annotation 所修飾的對象范圍
@Retention @Retention表示Annotation聲明周期旺隙,RUNTIME:運行時保留
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Custom{
    String value();        //注解的屬性绒极,如果只有一個屬性,一般叫value
    String name() default "";            //屬性蔬捷,默認(rèn)值""垄提,可以不寫
}

spring AOP注解 描述
@Apsect 將當(dāng)前類標(biāo)識為一個切面
@Pointcut 定義切點,這里使用的是條件表達式
如: "execution(* com.travels.controller.AlipayController .groupOrderPay(..))" com.travels.controller.AlipayController代表調(diào)用類周拐,groupOrderPay(..)代表調(diào)用方法铡俐,任意參數(shù)
如:@annotation(com.travels.controller.AlipayController.groupOrderPay) 匹配注解類
@Before 前置增強,就是在目標(biāo)方法執(zhí)行之前執(zhí)行妥粟;
@AfterReturning 后置增強审丘,方法退出時執(zhí)行;
@AfterThrowing 有異常時該方法執(zhí)行勾给;
@AfterThrowing 有異常時該方法執(zhí)行滩报;
@After 最終增強,無論什么情況都會執(zhí)行播急;
@Afround 環(huán)繞增強
三元表達式 描述
三元表達式 return a>b?a:b
Lambda表達式 描述
Lambda表達式 允許把函數(shù)作為一個方法的參數(shù),簡化匿名內(nèi)部類
@FunctionalInterface 函數(shù)式接口:一個接口脓钾,然后就是在這個接口里面只能有一個抽象方法,加上了@FunctionInterface只能有一個抽象方法,否則編譯器會報錯
Supplier 提供者 指定一個泛型并返回
Consumer 消費者 指定一個泛型傳入桩警,沒有返回值
Predicate 輸入?yún)?shù)進行判斷可训,然后返回布爾值
Function 兩個參數(shù),T輸入 R輸出

@FunctionalInterface
public interface MyFunctional{
    void myFunctional();
}

public class MyFunctionalTest {
    public static void main(String[] args) {
        MyFunctional myFunctional = () -> System.out.println("myFunctional");
        myFunctional.myFunctional();
    }
}
@FunctionalInterface
public interface MyFunctional{
    String myFunctional();   //有返回值類型
}

public class MyFunctionalTest {
    public static void main(String[] args) {
        String str = "string";
        MyFunctional myFunctional = () -> {return str;};
        System.out.println(myFunctional.myFunctional());
    }
}
public class SupplierTest {
    public static String getString(Supplier<String> supplier) {
        return supplier.get();
    }

    public static void main(String[] args) {
        String str = getString(() -> {return "get string";});
        System.out.println(str);
    }
}
public class ConsumerTest {
    public static void consumerTest(String string,Consumer<String> con) {
        con.accept(string);
    }
    public static void main(String[] args) {
        String str = "Consumer... ";
        consumerTest(str, (String string) -> { System.out.println(str);});
    }
}
public class PredicateTest {
    public static Boolean check(String string,Predicate<String> pre) {
        return pre.test(string);
    }
    public static void main(String[] args) {
        String str = "true";
        Boolean bl = check(str, (String string) -> { return true;});
        System.out.println(bl);
    }
}
public class FunctionTest {
    
    public static int change(String string,Function<String, Integer> fun) {
        Integer integer = fun.apply(string);
        return integer;
    }
    
    public static void main(String[] args) {
        String str = "1";
        Integer integer = change(str, (String string) -> {return Integer.parseInt(str);});
        System.out.println(integer);
    }
}
Stream 描述
Stream 一種鏈?zhǔn)胶瘮?shù)式編程捶枢,流終結(jié)了就不能再次操作握截,簡化Collection集合操作
void forEach(Consumer<? super T> action); 用來便利,終結(jié)方法
Stream<T> filter(Predicate<? super T> predicate); 用于過濾烂叔,返回符合條件的元素
<R> Stream<R> map(Function<? super T, ? extends R> mapper); 輸入一個參數(shù)谨胞,返回一個參數(shù)
long count(); 終結(jié)方法,返回元素個數(shù)
Stream<T> limit(long maxSize); 截取前n個元素
Stream<T> skip(long n); 跳過前n個元素
public class StreamTest {
    
    public static void main(String[] args) {
        
        List<String> list = new ArrayList<String>();
        list.add("1");
        list.add("2");
        
        list.stream()
        .filter((String numeral) -> { return numeral.startsWith("1");})
        .map((String numeral) -> {return Integer.parseInt(numeral);}).limit(1)
        .forEach((Integer numeral) -> {System.out.println(numeral);});
        
    }
}
Filter 描述
Filter 過濾器
init 初始化
doFilter 攔截
destroy 消耗
public class FilterTest implements Filter{
    
    @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            // TODO Auto-generated method stub
            Filter.super.init(filterConfig);
        }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        // TODO Auto-generated method stub
        
    }
    
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        Filter.super.destroy();
    }

}
過濾器 描述
HandlerInterceptor 接口
HandlerInterceptorAdapter 抽象類 Spring MVC封裝
preHandle 方法調(diào)用前執(zhí)行
postHandle 方法執(zhí)行后調(diào)用
afterCompletion 請求處理完畢后回調(diào)
public class HandlerInterceptorTest implements HandlerInterceptor{
    
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        // TODO Auto-generated method stub
        return HandlerInterceptor.super.preHandle(request, response, handler);
    }
    
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        // TODO Auto-generated method stub
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }
    
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        // TODO Auto-generated method stub
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}

public class HandlerInterceptorAdapterTest extends HandlerInterceptorAdapter{
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        // TODO Auto-generated method stub
        return super.preHandle(request, response, handler);
    }
    
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        // TODO Auto-generated method stub
        super.postHandle(request, response, handler, modelAndView);
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        // TODO Auto-generated method stub
        super.afterCompletion(request, response, handler, ex);
    }
}
異常處理 描述
異常處理 @RestControllerAdvice + @ExceptionHandler優(yōu)化try catch
public class MyException extends Exception {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private String message;

    /**
     * 自定義異常
     * 
     * @param message :異常描述
     */
    public MyException(String message) {
        this.message = message;
    }

}

@RestControllerAdvice
public class ExceptionResponseConfig {
    
    
    @ExceptionHandler(value = MyException.class)
    public Map<String, Object> myExceptionHandler(MyException exception) {
        return StateCode.getMap(StateCode.OPERATION_ERROR, exception.getMessage());
    }
    
    
    public void test() throws MyException
    {
        throw new MyException("自定義異常");
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末长已,一起剝皮案震驚了整個濱河市畜眨,隨后出現(xiàn)的幾起案子昼牛,更是在濱河造成了極大的恐慌术瓮,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贰健,死亡現(xiàn)場離奇詭異胞四,居然都是意外死亡,警方通過查閱死者的電腦和手機伶椿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門辜伟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氓侧,“玉大人,你說我怎么就攤上這事导狡≡枷铮” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵旱捧,是天一觀的道長独郎。 經(jīng)常有香客問我,道長枚赡,這世上最難降的妖魔是什么氓癌? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮贫橙,結(jié)果婚禮上贪婉,老公的妹妹穿的比我還像新娘。我一直安慰自己卢肃,他們只是感情好疲迂,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著莫湘,像睡著了一般鬼譬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逊脯,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天优质,我揣著相機與錄音,去河邊找鬼军洼。 笑死巩螃,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的匕争。 我是一名探鬼主播避乏,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼甘桑!你這毒婦竟也來了拍皮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤跑杭,失蹤者是張志新(化名)和其女友劉穎铆帽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體德谅,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡爹橱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了窄做。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愧驱。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡慰技,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出组砚,到底是詐尸還是另有隱情吻商,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布糟红,位于F島的核電站手报,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏改化。R本人自食惡果不足惜掩蛤,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望陈肛。 院中可真熱鬧揍鸟,春花似錦、人聲如沸句旱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谈撒。三九已至腥泥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間啃匿,已是汗流浹背蛔外。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留溯乒,地道東北人夹厌。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像裆悄,于是被迫代替她去往敵國和親矛纹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容