zoukankan      html  css  js  c++  java
  • 博客开发:框架搭建

    博客开发:框架搭建

    一.使用idea快速搭建框架

     导入mybatis-plus依赖

     <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.0.5</version>
     </dependency>

    二.配置配置文件

    配置yml文件

    application.yml

    spring:
      thymeleaf:
        mode: HTML
      profiles:
        active: pro
    mybatis-plus:
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

    application-dev.yml

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/myblog?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
        username: root
        password: 13476110270dwx
    logging:
      level:
        root: info
        com.myblog.demo: debug
      file:
        name: log/blog-dev.log

    application-pro.yml

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/myblog?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
        username: root
        password: 13476110270dwx
    
    logging:
      level:
        root: warn
        com.myblog.demo: info
      file:
        name: log/blog-pro.log

    并在resources文件夹下添加logback-spring.xml文件对日志进行配置

    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration>
        <!--包含Spring boot对logback日志的默认配置-->
        <include resource="org/springframework/boot/logging/logback/defaults.xml" />
        <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
        <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    
        <!--重写了Spring Boot框架 org/springframework/boot/logging/logback/file-appender.xml 配置-->
        <appender name="TIME_FILE"
                  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </encoder>
            <file>${LOG_FILE}</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i</fileNamePattern>
                <!--保留历史日志一个月的时间-->
                <maxHistory>30</maxHistory>
                <!--
                Spring Boot默认情况下,日志文件10M时,会切分日志文件,这样设置日志文件会在100M时切分日志
                -->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>10MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
    
            </rollingPolicy>
        </appender>
    
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="TIME_FILE" />
        </root>
    
    </configuration>
            <!--
                1、继承Spring boot logback设置(可以在appliaction.yml或者application.properties设置logging.*属性)
                2、重写了默认配置,设置日志文件大小在10MB时,按日期切分日志
            -->

    三.异常处理

    对404,500,error异常页面进行处理,错误页面的文件名称必须固定:

    • 404.html:浏览器错误,资源找不到
    • 500.html:服务端错误
    • error.html:自定义错误

    全局异常处理

    404和500的错误页面,SpringBoot可以根据页面的命名方式找到对应文件,自定义的错误就需要自定义拦截器来拦截异常信息并返回给error页面,创建异常拦截器,当异常标识了状态码时就不拦截,没标识状态码就拦截

    @ControllerAdvice//拦截所有带Controller的控制器
    public class ControllerExceptionHandler {
        //    将异常记录到日志
        private final Logger logger = LoggerFactory.getLogger(this.getClass());
    
        @ExceptionHandler(Exception.class)
        public ModelAndView exceptionHander(HttpServletRequest request, Exception e) throws Exception {
            // 记录异常信息:请求的URL,异常信息
            logger.error("Requst URL : {},Exception : {}", request.getRequestURL(),e);
    
            // 当标识了状态码的时候就不拦截
            if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null) {
                throw e;
            }
            //    将记录的异常信息返回到error页面
            ModelAndView mv = new ModelAndView();
            mv.addObject("url",request.getRequestURL());
            mv.addObject("exception", e);
            mv.setViewName("error/error");
            return mv;
        }
    }

    资源找不到异常处理

    资源找不到异常也有跳转到404页面,自定义一个异常类给其指定状态码就不会被拦截,创建资源找不到异常类

    @ResponseStatus(HttpStatus.NOT_FOUND)
    public class NotFoundException extends RuntimeException{
        //继承RuntimeException的构造函数
        public NotFoundException(){}
        public NotFoundException(String message){
            super(message);
        }
        public NotFoundException(String message,Throwable cause){
            super(message,cause);
        }
    }
  • 相关阅读:
    LeetCode 977 有序数组的平方
    LeetCode 24 两两交换链表中的节点
    LeetCode 416 分割等和子集
    LeetCode 142 环形链表II
    LeetCode 106 从中序与后序遍历序列构造二叉树
    LeetCode 637 二叉树的层平均值
    LeetCode 117 填充每个节点的下一个右侧节点
    LeetCode 75 颜色分类
    redhat 7.4 挂载ntfs格式的u盘并且使用
    redhat 查看CPU frequency scaling(CPU频率缩放)
  • 原文地址:https://www.cnblogs.com/python-road/p/14266899.html
Copyright © 2011-2022 走看看