controller层阶解读(有涉及vue的认识)

一、解读controller 层

1、CommonController 解读

  • @Slf4j --》 简化代码,用于日志输出。

    @Slf4j是用作日志输出的,一般会在项目每个类的开头加入该注解,如果不写下面这段代码,并且想用log 。

    private final Logger logger = LoggerFactory.getLogger(当前类名.class);
    

    就可以用@Slf4来代替;这样就省去这段很长的代码。

     log.info("进入账单查询接口"); 
    
  • @RequestMapping("${server.error.path:$*error.path:/error}}")
    

    开始看到这段注释有点懵啊,server.erroe.path 是啥?

    猜想根据之前学的应该是错误路径,error.path:/error是啥? --》 应该是错误页面的位置吧!

    后面验证猜想大概都对了。SpringBoot 错误处理机制

    1. 读了这篇博客之后。我就自己去摸索,读源码,发现 ErrorMvcAutoConfiguration 是SpringBoot错误处理的自动配置类,发现类中有这个方法

      @Bean
      public ErrorPageCustomizer errorPageCustomizer(DispatcherServletPath dispatcherServletPath) {
      		return new ErrorPageCustomizer(this.serverProperties, dispatcherServletPath);
      }
      

      ErrorPageCustomizer 这个类是错误页面定制器,继续深入。发现ErrorPageCustomizer 中有这个方法

      @Override
      public void registerErrorPages(ErrorPageRegistry errorPageRegistry) {
      	ErrorPage errorPage = new ErrorPage(					    				this.dispatcherServletPath.getRelativePath(this.properties.getError().getPath()));
      	errorPageRegistry.addErrorPages(errorPage);
      }
      

      ErrorPage应该是错误页面,传入了一个参数,这个参数就是SpringMVC核心控制器dispatcherServletPath获取之前构造的页面路径,然后通过errorPageRegistry添加到errorPgae实例。

  • 静态变量

    NOT_FOUND_TEMPLATE
    INTERNAL_ERROR_TEMPLATE
    ERROR_TEMPLATE
    DEFAULT_ERROR_PATH
    COULD_NOT_RESOLVE_VIEW_WITH_NAME_PREFIX
    

    这些静态变量是一些错误页面。

    ThemeService themeService;
    ErrorProperties errorProperties;
    ErrorAttributes errorAttributes;
    OptionService optionService;
    
    1. themeService: 看到第一个themeService就有点看不懂了,后面终于懂了,原来是作者定义的,里面全是关于模板的一系列操作,例如:获取主题属性、 按绝对路径列出主题文件夹 、 判断模板在指定主题下是否存在等,也就是页面例如error.ftl。

      这里有一个小技巧,就是ctrl+鼠标单击,可以查看是,如果有带锁的标志就是源码不能修改,如果没有锁,就是自己定义,可以帮助你解决不少困惑。

      扩展 @NotNull和@NonNull区别和使用

    2. ErrorProperties: 用于web错误处理的配置属性。

    3. ErrorAttributes: 提供给用户访问一些可以记录或显示的错误属性。

    4. OptionService: 作者定义的 选择服务接口。

  • handleError() 方法:

    public void error(String format, Object... arguments);
    

    log.error(): 日志答应的内和格式。

  • boolean isIncludeStackTrace(HttpServletRequest request) 
    
  • void handleCustomException(@NonNull HttpServletRequest request)
    

    处理自定义异常方法。

    1. 其中Assert抽象类是帮助验证参数的断言实用程序类。
    2. 其中有三个判断应该是主要内容,
      • 第一个判断就是系统抛出的异常,
      • 第二个就是判断就是,普通的ServletException根本不会暴露,既不在异常消息中,也不在打印堆栈跟踪中的 。所有通过这个类NestedServletException去继承ServletException,然后派生,将根本原因暴露出来。
    3. 第一个判断就是通过异常的前缀判断是否是不能解析的视图异常。
  • String getActualTemplatePath(@NonNull String template)
    

    获取页面基础名,这里用到了作者编写的FilenameUtils类,主要功能是对文件名的一些判断。

2、vue的学习

读到这里,我就想着应该是去测试登录页面了,可以在源码中发现没有页面代码,于是摸索了一番,里面用到了vue,对也我这初出茅庐,而且是学后端开发的人来说,前段只是略懂一点,所有,就去学习vue了。

学习vue,首先要把nodejs去了解一下,不是必须,但是有必要。因为这里需要去安装一个vuetools,需要用到包管理工具npm,cnpm (国内)。nodejs安装参考

  1. Vue devtools的安装真的是废了我九牛二虎之力,很烦,弄了一个多小时,github上的步骤安装

    发现yarn用不了,然后又去装yarn --> npm install -g yarn 。

    安装好yarn后,又发现,yarn run build 有问题,最终到时chrome扩展不成功。原来是配置文件名称的问题。

    最后终于找到了解决方法 –有关vue devtools安装出现的出错误问题汇总

  2. 安装好了vue之后,去vue官网学习了一下,vue官网。发现都是学习一些语法,和具体怎么用,没有实战项目练手。记忆点不深刻,后面就放弃了。有兴趣的可以去学习一下,然后找个实现项目练手。博主以后也是要学习的,由于时间原因,先暂时不学。

这里有必要说一下,JsDeliver,CDN内容分发网络,以后肯定会用上的哦。CND介绍

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值