SptingBoot构建电商基础秒杀项目时遇到的问题

一、应用SpringBoot完成基础项目搭建

2-3 Mybatis接入SpringBoot项目

2-4 Mybatis自动生成器使用方式

在使用Maven自动生成接口UserDOMapper和UserPasswordDoMapper后,需要在接口文件上加上@Mapper注解,让DemoMapper能够让别的类进行引用。
在这里插入图片描述
使用@Mapper注解的缺点:
·直接在Mapper类上面添加注解@Mapper,这种方式要求每一个mapper类都需要添加此注解,麻烦。
改进方法:使用@MapperScan注解
在这里插入图片描述
此时发现,下面还是显示UserDOMapper未找到。我们还要需要在UserDOMapper上加上注解@Repository,然后就能够正常运行了,与单独加上@Mapper注解的效果一样。

对比:@Mapper注解单独使用就可以把它交给spring管理了,并且别的类可以直接引用。
@Repository也可以把它交给sprin管理,但是在获取该容器中的对象时,需要用@MapperScan扫描到此文件,或者该文件所在的package。

3-1 使用SpringMVC方式开发用户信息

  1. 首先在userservice的实例中UserServiceImpl中:
    1) 通过userDOMapper获得userDO对象(by 传入的id)
    2) 通过userPasswordDOMapper获得userPasswordDO对象(by userDO拿到id)
    3) 通过userDO和usePasswordDO得到userModel(重点方法BeanUtils.copyProperties)
  2. 在UserController中传入参数id给userService.getUserById()方法即可得到userModel,但此时的userModel(里面包含了全部用户信息,包括注册方式和加密后的密码等)并不能直接供UI使用,因此需要在controller下面创建一个viewobject包,创建一个UserVO对象,里面的用户信息是能够传递给UI的部分。
  3. 在UserController中得到userModel后将其转化成UserVO对象,然后供UI使用。(重点方法BeanUtils.copyProperties)。

3-2 定义通用的返回对象–返回正确信息

在上一节中,如果信息在传递过程中都正确,则返回没有问题,但是如果整个传递过程中出现一点问题,前端就只能显示错误信息 500。
创建respons包,创建CommonReturnType类,定义两个属性 status和data
//若status=success,则data内部返回前端需要的json数据
//若status=fail,则data内使用通用的错误码格式
//定义一个通用的创建方法
//如果不带status,则对应的status就是success,然后通过下面的同名函数返回type
public static CommonReturnType creat(Object result)
然后修改UserController中的代码,不要直接返回UserVO,通过CommonReturnType.creat()方法返回status和data(status就是success,data就是UserVO)。注意:这里是返回的正确信息,下面再讲错误信息的处理

3-3 定义通用的返回对象–返回错误信息

首先创建一个名叫error的包,在里面创建一个接口CommonError

  1. 在接口里面添加三个方法:
    1) public int getErrCode(); //用于获取错误码
    2) public String getErrMsg(); //用于获取错误信息
    3) public CommonError setErrMsg(String errMsg); //用于设置自定义错误信息
  2. 然后创建一个枚举类EmBusinessError实现上面的接口,
    定义一个通用错误类型00001,PARAMETER_VALIDATION_ERROR(00001,“参数不合法”),和一个1000开头的用户信息错误,USER_NOT_EXIST(10001,“用户不存在”),
    在枚举类中添加两个属性 int errCode;和String errMsg;添加一个全参构造器并重写三个方法。
  3. 最后创建一个异常类BusinessError实现上述接口,
    在异常类中添加一个属性CommonError,添加两个构造器,一个接收EmBusinessError的参数构造业务异常,一个接收自定义errMsg的参数构造业务异常,最后重写三个方法。

3-4 定义通用的返回对象–异常处理01

在UserController中定义exceptionhandler解决未被controller层吸收的exception

   @ExceptionHandler(Exception.class)//指明收到的是跟类异常就会进入该处理环节
   @ResponseStatus(HttpStatus.OK)//业务逻辑处理上的问题,而不是服务的不能处理的错误(500),返回错误码200
   @ResponseBody//不加该注解,只能寻找本地页面下的一些文件,加上该注解后将返回值以特定的格式(json格式)返回到response的body区域
   public Object handlerException(HttpServletRequest request, Exception ex){
   	
       ······
       return commonReturnType;
   }

3-5 定义通用的返回对象–异常处理02

上面返回的信息非常多,下面把错误信息封装到map中让其只返回errCode和errMsg。
首先把ex强转成BusinessException类,然后用把它的errCode和errMsg放到Map中,最后用CommonReturnType类中的creat方法生成公共错误类型并返回。
优化

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 Spring Boot 项目过滤器的编写,可以按照以下步骤进行: 1. 创建一个过滤器类 在 Spring Boot 项目中,可以通过实现 javax.servlet.Filter 接口来创建一个过滤器类。在该类中,需要重写 doFilter() 方法来实现过滤逻辑。 例如,创建一个名为 MyFilter 的过滤器类: ``` public class MyFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 过滤逻辑 chain.doFilter(request, response); // 继续执行下一个过滤器或目标资源 } } ``` 2. 配置过滤器 在 Spring Boot 项目中,可以通过在配置类中声明一个名为 registrationBean 的 Bean,并在其中进行过滤器的配置。 例如,在一个名为 MyConfiguration 的配置类中,声明一个名为 myFilter 的过滤器,并将其配置到路径为 /api/* 的请求中: ``` @Configuration public class MyConfiguration { @Bean public MyFilter myFilter() { return new MyFilter(); } @Bean public FilterRegistrationBean<MyFilter> registrationBean(MyFilter myFilter) { FilterRegistrationBean<MyFilter> registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(myFilter); registrationBean.addUrlPatterns("/api/*"); return registrationBean; } } ``` 在以上代码中,通过 @Bean 注解声明了一个名为 myFilter 的 Bean,并通过另一个名为 registrationBean 的 Bean 进行过滤器的配置。在 registrationBean 中,将 myFilter 设置为要配置的过滤器,并设置了过滤的请求路径为 /api/*。 这样,当请求路径为 /api/* ,就会触发 MyFilter 过滤器的 doFilter() 方法,从而实现过滤功能。 以上就是 Spring Boot 项目过滤器的编写和配置方法,希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值