Java设计一个可追踪是否成功执行的方法

没写过web应用的人永远不知道只能看log日志debug的痛苦
因此,设计一个可追踪是否成功执行的方法,并在项目中广泛使用,对web应用来说很重要

使用:

public class Test{
    public static void main(String[] args){
        Abc abc = new Abc();
        //Java传引用,使用NameValeDto对象保存方法中业务逻辑处理的结果
        NameValeDto inputDto = new NameValeDto("A","12");
        if(!abc.mainService1(inputDto )){
            logger.error("mainService1 error");
            return;
        }
        if(!abc.mainService2(inputDto )){
            logger.error("mainService2 error");
            return;
        }
        if(!abc.mainService3(inputDto )){
            logger.error("mainService3 error");
            return;
        }
    }
}

定义:

//Java传引用,使用NameValeDto对象保存方法中业务逻辑处理的结果
public class NameValeDto {
    public String name;
    public String value;
    public NameValeDto(String name, String value){
        this.name = name;
        this.value = value;
    }
}
public class Abc {
    boolean mainService1(NameValeDto nameValeDto){
    //Java传引用,使用NameValeDto对象保存方法中业务逻辑处理的结果
        if(nameValeDto.name==null||nameValeDto.value==null){
            logger.error("no 参数 input");
            return false;
        }
        try{
            //业务逻辑
            return true;
        } catch(Exception e){
            logger.error("mainService"+e.getMessage());
            return false;
        }finally{
            //close resource
        }
    }

    boolean mainService2(NameValeDto nameValeDto){
    //Java传引用,使用NameValeDto对象保存方法中业务逻辑处理的结果
        if(nameValeDto.name==null||nameValeDto.value==null){
            logger.error("no 参数 input");
            return false;
        }
        try{
            //业务逻辑
            return true;
        } catch(Exception e){
            logger.error("mainService"+e.getMessage());
            return false;
        }finally{
            //close resource
        }
    }

    boolean mainService3(NameValeDto nameValeDto){
    //Java传引用,使用NameValeDto对象保存方法中业务逻辑处理的结果
        if(nameValeDto.name==null||nameValeDto.value==null){
            logger.error("no 参数 input");
            return false;
        }
        try{
            //业务逻辑
            return true;
        } catch(Exception e){
            logger.error("mainService"+e.getMessage());
            return false;
        }finally{
            //close resource
        }
    }
}

Java中没有一种技术,可以约束一个方法的格式,换句话说,Java没法定义一个方法的模板,做到只需要替换参数就可以应用到不同的业务。

只能依靠所谓的“代码规范”。

鄙人认为这是不对的,比如本文的3个方法,有很多冗余的代码。假如Java有这样的机制定义一个模板如下:

@BooleanReturn //约束了返回值为Boolean,并对异常自动logger并return false
mainService3(/*参数列表*/){
    //业务逻辑
}

开发不仅变得简单而且规范。遗憾的是,Java注解做不到

你可能感兴趣的:(java)