个人博客项目笔记_07
1|0写文章
写文章需要 三个接口:
-
获取所有文章类别
-
获取所有标签
-
发布文章
2|01. 所有文章分类
2|11.1 接口说明
接口url:/categorys
请求方式:GET
请求参数:
参数名称 | 参数类型 | 说明 |
---|---|---|
返回数据:
2|21.2 Controller
2|31.3 Service
3|02. 所有文章标签
3|12.1 接口说明
接口url:/tags
请求方式:GET
请求参数:
参数名称 | 参数类型 | 说明 |
---|---|---|
返回数据:
3|22.2 Controller
3|32.3 Service
TagServiceImpl:
4|03. 发布文章
4|13.1 接口说明
接口url:/articles/publish
请求方式:POST
请求参数:
参数名称 | 参数类型 | 说明 |
---|---|---|
title | string | 文章标题 |
id | long | 文章id(编辑有值) |
body | object({content: "ww", contentHtml: " ww ↵"}) |
文章内容 |
category | 文章类别 | |
summary | string | 文章概述 |
tags | [{id: 5}, {id: 6}] | 文章标签 |
返回数据:
4|23.2 Controller
4|33.3 Service
ArticleServiceImpl:
ArticleServiceImpl共需要经历如下步骤:
创建一个
Article
对象,并设置其属性,最后将文章对象插入到数据库中。
将文章id与标签id进行关联——获取文章的标签列表,遍历标签列表,对每个标签执行以下操作:
- 创建一个 ArticleTag 对象,并设置其文章ID和标签ID。
- 将 ArticleTag 对象插入到数据库中(article_tag表)。
文章内容存储(article_body表)
更新article表中的body属性
设置返回值
当然登录拦截器中,需要加入发布文章的配置:
WebMVCConfig:
4|43.4 测试
5|04. AOP日志
定义一个自定义注解
LogAnnotation
,用于在方法上添加日志相关的注解信息:
@Target(ElementType.METHOD)
:这个注解指定了LogAnnotation
注解可以被应用于方法上。@Retention(RetentionPolicy.RUNTIME)
:这个注解指定了LogAnnotation
注解在运行时可见。@Documented
:这个注解指定了LogAnnotation
注解将被包含在 Javadoc 中。String module() default "";
:这个注解定义了一个module
属性,用于指定日志的模块,默认值为空字符串。String operator() default "";
:这个注解定义了一个operator
属性,用于指定执行操作的操作者,默认值为空字符串。这个自定义注解可以用于方法上,用于标记需要记录日志的方法,并且可以通过
module
和operator
属性指定日志的模块和操作者。(Javadoc 是 Java 语言中用于生成 API 文档的工具。它能够根据源代码中的特定标记,自动生成与代码相关的文档。Javadoc 工具会扫描 Java 源代码中特定格式的注释,并根据这些注释生成 HTML 格式的 API 文档。这些注释通常以
/**
开头,以*/
结尾,位于类、方法、字段等代码元素的前面。Javadoc 工具会解析这些注释中的标签和内容,并生成易于阅读和导航的 API 文档。)
LogAspect是一个使用了 Spring AOP的日志切面类:
@Aspect
:这个注解标识了这个类是一个切面类,用于定义通知和切点的关系。
@Pointcut("@annotation(com.cherriesovo.blog.common.aop.LogAnnotation)")
:这个注解定义了一个切点logPointCut()
,它表示当目标方法上存在com.cherriesovo.blog.common.aop.LogAnnotation
注解时,这个切点会匹配到。
public void logPointCut() { }
:这个方法定义了切点的具体内容,但方法体为空,因为它只是用于标识切点,实际的逻辑在通知方法中实现。
@Around("logPointCut()")
:这个注解表示环绕通知,它表示在目标方法执行前后都会执行通知逻辑。
public Object around(ProceedingJoinPoint point) throws Throwable { }
:这个方法是环绕通知的具体实现。在目标方法执行前记录开始时间,在执行后记录结束时间,并记录日志。
private void recordLog(ProceedingJoinPoint joinPoint, long time) { }
:这个方法用于记录日志,它获取了目标方法的签名、注解信息、方法参数、请求信息等,并使用日志记录器将这些信息输出到日志中。
ProceedingJoinPoint
是 Spring AOP 中的一个接口,它提供了对连接点(Join Point)进行操作的功能。在面向切面编程中,连接点表示程序执行过程中的特定点,比如方法的调用或异常的处理等。
ProceedingJoinPoint
是JoinPoint
的子接口,在 Spring AOP 中,它专门用于表示可以执行的连接点,例如在环绕通知中,通过调用proceed()
方法可以执行目标方法。通常,在环绕通知中,我们会将
ProceedingJoinPoint
对象作为参数传递给通知方法,在通知方法中可以通过调用proceed()
方法来继续执行目标方法,也可以获取连接点的信息,如方法签名、参数等。整个类的作用是,当目标方法被调用时,记录下方法的执行时间、方法的输入参数、请求的 IP 地址等信息,并将这些信息输出到日志中,以便进行日志记录和监控。
__EOF__

本文链接:https://www.cnblogs.com/zyj3955/p/18129831.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2022-04-11 操作系统——第四章课后习题答案02
2021-04-11 《人月神话》读后感(第三四章)
2021-04-11 学习日报