【SpringBoot搭建个人博客】- 框架搭建,dubbo+zookeeper原理

本文介绍了如何使用SpringBoot搭建个人博客,包括将配置文件从properties改为yml,配置开发和部署环境,以及自定义日志处理。详细讲述了异常处理,如404、500页面的定制,全局异常拦截,以及资源找不到异常的自定义处理。同时,文章还讨论了日志处理,利用AOP记录访问URL、IP、方法、参数和返回内容。
摘要由CSDN通过智能技术生成

创建好SpringBoot项目后,框架自带的是properties文件,这里使用yml文件进行配置,所以将application.properties改为application.yml文件,并进行相关配置。 我们在开发项目的时候,一般开发环境和部署环境会不一样,为了加以区分,可以在yml配置文件中体现出来,所以分为application-dev.yml(开发环境)、application-pro.yml(部署环境),而为了能够让SpringBoot知道用的是哪个配置文件,需要在application.yml配置文件中加以说明,并且开发和部署中相同的配置也可以在application.yml中进行配置,详细配置如下:

  • application.yml:公共配置和表明当前配置文件

  • application-dev.yml:开发环境配置文件

  • application-pro.yml:部署环境配置文件

application.yml

spring:

thymeleaf:

mode: HTML

profiles:

active: pro

mybatis:

type-aliases-package: com.star.entity

mapper-locations: classpath:mapper/*.xml

configuration:

map-underscore-to-camel-case: true

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: 111111

logging:

level:

root: info

com.star: debug

file: 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&server

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

Timezone=UTC&serverTimezone=GMT%2B8

username: root

password: 111111

logging:

level:

root: warn

com.star: info

file: log/blog-pro.log

在上面的配置中,可以看到,公共部分application.yml配置了thymeleaf模板、当前配置活跃文件、数据持久层的配置,开发环境和部署环境配置了数据库(两个环境的数据库用户名和密码一般会不一样),然后就是日志文件的相关配置,可以在指定文件夹下生成日志文件。

SpringBoot中有日志默认的生成以及切分,在这里我们可以重写SpringBoot默认日志配置,自定义日志大小和名称等等,在资源文件夹下添加logback-spring.xml进行配置,配置如下:

<?xml version="1.0" encoding="UTF-8" ?>

<appender name=“TIME_FILE”

class=“ch.qos.logback.core.rolling.RollingFileAppender”>

${FILE_LOG_PATTERN}

${LOG_FILE}

${LOG_FILE}.%d{yyyy-MM-dd}.%i

30

10MB

3.运行

由于本系列博客只讲述博客后端的开发,前端不会细说,页面直接拿来用,可以直接从GitHub中下载前端页面(欢迎star):https://github.com/oneStarLR/myblog-page ,将前端页面导入进项目中,注意目录别放错了

至此,基本框架搭建完成,可以运行一下了,可以看到在dev和pro配置下打印的log日志以及在项目中自动生成一个log文件夹,存放dev和pro日志文件。

dev日志打印:

pro日志打印:

开发的时候为了能看到更多的信息,使用dev配置环境

二、异常处理

在页面访问的时候,会有一些比较常见的异常报错信息,比如路径无法访问404异常、服务器错误500异常以及自己定义的错误页面等等,SpringBoot框架提供了处理错误页面的方法,在这里,咱们对404、500、error异常页面进行处理。

1.定义错误页面

可以在前端页面templates目录下有error文件夹,SpringBoot可以通过文件夹的名称和错误文件命名的方式找到异常页面,所以文件名称只能固定,有以下异常页面:

  • 404.html

  • 500.html

  • error.html

可以通过控制器来测试一下,在com.star文件夹下面新建controller包,创建IndexController控制器作为首页控制器,代码如下:

package com.star.controller;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

/**

  • @Description: 首页控制器

  • @Date: Created in 21:01 2020/5/20

  • @Author: ONESTAR

  • @QQ群: 530311074

  • @URL: https://onestar.newstar.net.cn/

*/

@Controller

public class IndexController {

//通过get方式请求路径

@GetMapping("/")

public String index(){

return “index”;

}

}

404页面测试:可以在在浏览器输入:http://localhost:8080/ ,可以访问到博客的首页,可以通过改变路径,如加一个无效的后缀,访问后发现跳转到我自己写的404页面

500页面测试:可以在IndexController控制器中加一句错误代码,人为的让服务器出错,如加一句:int a = 9/0; (分母不能为零,这样服务器就会出错),然后访问:http://localhost:8080/, 发现跳转到了500页面,这就说明没有问题(记得把导致500的错误注释掉)

2.全局异常处理

对于404和500错误页面,SpringBoot可以根据页面的命名方式找到对应的文件,而自定义的错误就需要我们自己来拦截了,让代码出现问题的时候跳转到我们自己定义的错误页面,这里就需要自定义拦截器。

在com.star文件夹下面新建hander包,创建ControllerExceptionHandler错误页面拦截器,通过定义这个类来拦截所有的异常,代码如下:

package com.star.controller.hander;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.core.annotation.AnnotationUtils;

import org.springframework.web.bind.annotation.ControllerAdvice;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.ResponseStatus;

import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;

/**

  • @Description: 拦截异常处理

  • @Date: Created in 21:40 2020/5/20

  • @Author: ONESTAR

  • @QQ群: 530311074

  • @URL: https://onestar.newstar.net.cn/

*/

@ControllerAdvice

public class ControllerExceptionHandler {

// 将异常记录到日志

private final Logger logger = LoggerFactory.getLogger(this.getClass());

/**

  • @Description: 处理错误信息

  • @Auther: ONESTAR

  • @Date: 21:52 2020/5/20

  • @Param: request:访问的异常URL

  • @Param: e:异常参数

  • @Return: 返回错误信息页面

*/

@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;

}

}

分析:

  • @ControllerAdvice表示拦截掉所有带有@Controller注解的控制器
  • @ExceptionHandler表明是异常处理方法
  • ModelAndView:返回一个页面信息
  • 通过拦截异常信息,在日志中记录,并返回给error页面
  • 标识了状态码的时候就不拦截,如资源找不到异常

3.资源找不到异常处理

对于资源找不到异常,一般也是要跳转到404页面的,这里就需要自定义一个异常类,专门用来应对资源找不到,在com.star文件夹下面新建NotFoundException类。

package com.star;

import org.springframework.http.HttpStatus;

import org.springframework.web.bind.annotation.ResponseStatus;

/**

  • @Description: 自定义异常

  • @Author: ONESTAR

  • @Date: Created in 16:03 2020/3/25

  • @QQ群: 530311074

  • @URL: https://onestar.newstar.net.cn/

*/

@ResponseStatus(HttpStatus.NOT_FOUND)

public class NotFoundException extends RuntimeException{

public NotFoundException() {

}

public NotFoundException(String message) {

super(message);

}

public NotFoundException(String message, Throwable cause) {

super(message, cause);

}

}

分析:

  • 继承RuntimeException,实现继承RuntimeException的构造函数
  • @ResponseStatus(HttpStatus.NOT_FOUND)注解表示资源找不到的状态码,标识了状态码的时候就不拦截

三、日志处理

采用SpringBoot中的AOP进行日志处理,AOP可以以切面的形式拦截,将日志内容记录下来,这里记录以下日志信息:

  • 访问的URL

  • 访问者的IP

  • 访问时调用的方法

  • 访问时传递的参数

  • 访问时返回的内容

1.添加依赖

在pom.xml中添加AOP的依赖

org.springframework.boot

spring-boot-starter-aop

2.切面处理

在com.star文件夹下面新建aspect包,创建LogAspect日志切面处理类,在这里对日志进行处理,代码如下:

package com.star.aspect;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值