当前位置: 首页 > news >正文

网站建设管理典型经验房地产最新消息14号公告

网站建设管理典型经验,房地产最新消息14号公告,wordpress屏蔽广告插件,优化大师网站前言 我们在开发的过程中#xff0c;一般都需要对方法的入参进行打印#xff0c;或者Debug调试的时候我们要查看方法入参的参数是否数量和数据正确性。 一般我们需要知道请求的参数、接口路径、请求ip等 但是考虑以后项目上线BUG排查的问题#xff0c;最好的方式就是使用…前言 我们在开发的过程中一般都需要对方法的入参进行打印或者Debug调试的时候我们要查看方法入参的参数是否数量和数据正确性。 一般我们需要知道请求的参数、接口路径、请求ip等 但是考虑以后项目上线BUG排查的问题最好的方式就是使用切面的方式来记录每个方法执行时要保存的日志处理那么下面我们来实现一个使用自定义注解的方式来对每个请求的方法上进行日志存储 AOP切面对某个方法进行增强处理例如在某个方法执行前或者执行后进行操作。 案例 首先我们看一个controller接口 import lombok.extern.slf4j.Slf4j;Slf4j RestController RequestMapping(/user/) public class TestController {PostMapping(getUserById)public String getUserById(RequestBody User user) {log.info(/user/getUserById params{}, user.toString());//执行代码逻辑...return 请求成功;} }这种一般没什么问题一般我们测试的时候都可以这样来写但如果有很多的方法那么每个方法都这样写显然很是繁琐那么我们通过下面的方式来实现当进入方法前打印请求的一些信息 实现 我们自定义一个注解名为Itboy import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD)//ElementType.METHOD表示为该注解在方法上添加 public interface Itboy { } 然后需要用到一些依赖这些是使用AOP的依赖我们提前引入一下 dependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactIdversion1.8.14/version /dependency dependencygroupIdorg.aspectj/groupIdartifactIdaspectjrt/artifactIdversion1.9.19/version /dependency然后我们定义一个切面类名为ItboyAspect 注这篇文章我使用的System打印方式如果需要保存日志换为对应的logger.info()即可。 import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.Date;Component Aspect Slf4j public class ItboyAspect {//Pointcut为切入点切入到Itboy这个注解上面Pointcut(annotation(com.mayikt.demo.Itboy))public void itboyAspect() {}//Before为在进入切点之前自动执行Before中的逻辑进入之前的前提是方法上需要有我们设置的自定注解Before(itboyAspect())public void beforeItboy(JoinPoint joinPoint) {//获取本次请求ServletRequestAttributes requestAttributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request requestAttributes.getRequest();//获取到方法名String methodName joinPoint.getSignature().getName();System.err.println(方法 methodName () 开始);//执行时间SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);Date date new Date();String time sdf.format(date);System.err.println(时间 : time);//请求URLSystem.err.println(URL : request.getRequestURL());//请求方法System.err.println(HTTP Method : methodName);//打印controller全路径和执行方法System.err.println(Class Method : joinPoint.getSignature().getDeclaringTypeName() . methodName);//请求IPSystem.err.println(IP : request.getRemoteHost());//请求入参System.err.println(Requert params : JSON.toJSONString(joinPoint.getArgs()));}//后置通知After(itboyAspect())public void afterItboy(JoinPoint joinPoint) {//获取到方法名String methodName joinPoint.getSignature().getName();System.err.println(方法 methodName () 结束);} } 然后我们只需要在需要保存的方法上添加Itboy注解即可 ItboyPostMapping(selectUserList)public String getUserById(RequestBody User user) {log.info(/user/selectUserList params{}, user.toString());//执行代码逻辑...return 请求成功;}最后我们来看一下效果 2023-04-02 14:21:29.033 INFO 5912 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms 方法getUserById() 开始 时间 : 2023-04-02 14:21:29 URL : http://127.0.0.1:8080/user/selectUserList HTTP Method : getUserById Class Method : com.mayikt.demo.TestController.getUserById IP : 127.0.0.1 Requert params : [{address:华东,age:18,id:10010,name:贾强}] 方法getUserById() 结束 2023-04-02 14:21:29.171 INFO 5912 --- [nio-8080-exec-1] com.mayikt.demo.TestController : /user/selectUserList paramsUser(id10010, name贾强, age18, address华东)总结 使用上面这种方式减轻了我们自己手动日志打印的繁琐而且配置也相对于比较简单如果有其他需求是比较频繁的操作的话我们就可以使用AOP切面的方式来完成。 肥肠好用
http://www.dnsts.com.cn/news/240167.html

相关文章:

  • 移动端和pc网站建e网室内设计网图片
  • 网站建设知识点有哪些漏缺购物网站促销方案
  • 湛江的网站建设公司网站开发知识产权
  • 备案之后怎样把 放到网站上网站建设 开票
  • 目前好的外贸网站泊头做网站价格
  • 响应式网站要多久大连建设网缴费查询
  • 做网站的标签什么意思wordpress悬浮导航
  • 甜点网站建设的功能及意义如何衡量一个网站的价值
  • 海阳玖网站建设在线创建网站免费网站
  • 西安网站建设专家电商网页设计教程
  • 制作网站要不要域名wordpress更改字体大小
  • 长沙网站设计哪家好交互设计作品集
  • 网站建设好发信息网网站建设英文文献目录
  • 谷歌网站地图生成器电商平面设计师
  • 泰州整站优化公司起名网站十大排名
  • 网站 数据库 关系企业网站优化的方案
  • 谷歌提交网站淘宝详情页设计一个多少钱
  • 网站后台登录不进去北京个人网站建设
  • 天津市工程建设交易管理中心网站没有icp备案的网站
  • 个人网站 cdn做网站公司 营销
  • 如何上传到自己的网站做门户网站的公司
  • 访问国外网站 速度慢个人主页签名引导进入橱窗
  • 房地产网站欣赏做视频网站犯法吗
  • 福州医疗网站建设wordpress 相片
  • 视频网站开发工具莱州网站建设效果
  • 网站建设的财务计划网页设计与制作100例怎么写
  • 太原网络推广网站南宁建站程序
  • 电商类网站开发项目书网站优化seo怎么做
  • 如何注销网站安徽工程造价信息网
  • 湖南公司响应式网站建设价位网站后台登录界面代码