秒杀模块碎碎念笔记(2)-Service层


dto:web与service层之间传输用
一般需要不同变量的构造方法来返回不同状态的结果


定义错误类:

public class SeckillException extends RuntimeException {
    public SeckillException(String message) {
        super(message);
    }

    public SeckillException(String message, Throwable cause) {
        super(message, cause);
    }
}

通常定义一个总的错误类型,然后其他子错误继承它,并为具体service接口定义抛出的异常
在service整体补抓异常,除了我们自己定义的异常外,dao层还可能出现数据库断开连接/数据库超时等异常
编译时异常整体抛出时,先要捕捉子类异常


打印错误日志

private Logger logger= LoggerFactory.getLogger(this.getClass());
logger.error(e.getMessage(),e);

枚举的使用:

public enum SeckillStatEnum {

    SUCCESS(1,"秒杀成功"),
    END(0,"秒杀结束"),
    REPEAT_KILL(-1,"重复秒杀"),
    INNER_ERROR(-2,"系统异常"),
    DATE_REWRITE(-3,"数据篡改");

    private int state;
    private String info;

    SeckillStatEnum(int state, String info) {
        this.state = state;
        this.info = info;
    }

    public int getState() {
        return state;
    }


    public String getInfo() {
        return info;
    }


    public static SeckillStatEnum stateOf(int index)
    {
        for (SeckillStatEnum state : values())
        {
            if (state.getState()==index)
            {
                return state;
            }
        }
        return null;
    }
}
public SeckillExecution(long seckillId, SeckillStatEnum statEnum, SuccessKilled successKilled) {
    this.seckillId = seckillId;
    this.state = statEnum.getState();
    this.stateInfo = statEnum.getInfo();
    this.successKilled = successKilled;
}

spring-service 放所有service有关,自动包括子包


事务只有在抛出运行时异常才回滚,不要乱用trycatch,因为如果有异常的话还是会被提交
尽可能保证执行时间短:不要穿插网络请求,也就是不要在事务方法里面写运行时间长的事务
如果需要长时间的方法:需要剥离,写到上层就可以
不是所有的方法都需要事务:只有一条修改操作/只读操作
需要了解行级锁的内容


idea xml 中在一个配置文件中引入另外一个文件的bean可能会出错,但是运行其实是没错的


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值