美文网首页
代码臃肿

代码臃肿

作者: 我是大兄弟 | 来源:发表于2019-07-11 23:56 被阅读0次
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 "";            //属性,默认值"",可以不写
}

spring AOP注解 描述
@Apsect 将当前类标识为一个切面
@Pointcut 定义切点,这里使用的是条件表达式
如: "execution(* com.travels.controller.AlipayController .groupOrderPay(..))" com.travels.controller.AlipayController代表调用类,groupOrderPay(..)代表调用方法,任意参数
如:@annotation(com.travels.controller.AlipayController.groupOrderPay) 匹配注解类
@Before 前置增强,就是在目标方法执行之前执行;
@AfterReturning 后置增强,方法退出时执行;
@AfterThrowing 有异常时该方法执行;
@AfterThrowing 有异常时该方法执行;
@After 最终增强,无论什么情况都会执行;
@Afround 环绕增强
三元表达式 描述
三元表达式 return a>b?a:b
Lambda表达式 描述
Lambda表达式 允许把函数作为一个方法的参数,简化匿名内部类
@FunctionalInterface 函数式接口:一个接口,然后就是在这个接口里面只能有一个抽象方法,加上了@FunctionInterface只能有一个抽象方法,否则编译器会报错
Supplier 提供者 指定一个泛型并返回
Consumer 消费者 指定一个泛型传入,没有返回值
Predicate 输入参数进行判断,然后返回布尔值
Function 两个参数,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 一种链式函数式编程,流终结了就不能再次操作,简化Collection集合操作
void forEach(Consumer<? super T> action); 用来便利,终结方法
Stream<T> filter(Predicate<? super T> predicate); 用于过滤,返回符合条件的元素
<R> Stream<R> map(Function<? super T, ? extends R> mapper); 输入一个参数,返回一个参数
long count(); 终结方法,返回元素个数
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 方法调用前执行
postHandle 方法执行后调用
afterCompletion 请求处理完毕后回调
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优化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("自定义异常");
    }
}

相关文章

  • 代码臃肿

  • iOS业务解耦之启动布局AppDelegate拆分

    解决AppDelegate.m内部代码过于臃肿的问题 绝大多数的项目AppDelegate.m内都有冗长臃肿的代码...

  • Lombok 消除臃肿代码的工具

    简介 Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使...

  • Android CleanArchitecture

    前言 由于近期项目代码日渐臃肿,原本的代码结构存在诸多问题;决定重构Android端代码。参考github项目:A...

  • Day19 - 自定义下拉刷新

    效果: 1、UI布局 2、代码实现,为了Controller中的代码不那么臃肿,我们稍微封装一下代码 2.1 封装...

  • 赌马小游戏

    根据自己所想思路写出来的小游戏,原生所写,代码略微臃肿,不过也容易看懂HTML代码 css代码 js代码 提一下所...

  • 谈谈iOS应用架构

    缘由 最近在新公司做代码重构,每天就是 update 然后 commit 。不说之前的代码写的多么臃肿吧,不说了,...

  • 臃肿

    小雨点点沁入心扉 凉凉的冷意在骨头缝里滋生 秋衣秋裤齐齐上阵抵挡风寒 这雨几时能休,阳光何时出门 绵绵不尽的小雨下...

  • Android AutoService 组件化

    作者:芩qin 1.前言 随着 App 的业务增加、版本迭代以及冗余的 “远古时期” 代码,App 代码变得臃肿增...

  • Android AutoService 组件化

    作者:芩qin 1.前言 随着 App 的业务增加、版本迭代以及冗余的 “远古时期” 代码,App 代码变得臃肿增...

网友评论

      本文标题:代码臃肿

      本文链接:https://www.haomeiwen.com/subject/mmcskctx.html