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

河北建设工程信息网站内江市网站建设培训

河北建设工程信息网站,内江市网站建设培训,办公室装修图,一旦开战最危险的城市内容参考自以下两个链接1、springboot中使用AOP切面完成全局日志_aop全局日志_邹飞鸣的博客-CSDN博客使用AOP记录日志_aop日志_trusause的博客-CSDN博客第一个链接思路很清晰,讲的也很详细,第二个链接讲了自定义注解为了便于自己理解做了以下整理目录 1.aspectj基本概念 2.添加…内容参考自以下两个链接1、springboot中使用AOP切面完成全局日志_aop全局日志_邹飞鸣的博客-CSDN博客使用AOP记录日志_aop日志_trusause的博客-CSDN博客第一个链接思路很清晰,讲的也很详细,第二个链接讲了自定义注解为了便于自己理解做了以下整理目录 1.aspectj基本概念 2.添加aop依赖 3.进行切面处理 (1)切面类 (2)自定义注解 (3)controller和serviceimpl 4.定义切点时包扫描路径的表达式怎么写 1.aspectj基本概念 下面两个类JoinPoint和ProceedingJoinPoint,ProceedingJoinPoint类在切面类中最后一个方法doAround()中用到了(已注释的部分),用于获取自定义注解2.添加aop依赖 !-- aop 依赖 -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId /dependency 3.进行切面处理 主要是在切面类中设置切入点(指定包扫描路径),然后定义织入方式(方法前,方法后等)也可以自定义注解,但是在我看来,最终还是要在切面类指定包扫描路径的,自定义注解无非是传入一些自定义参数,暂时没有探索别的用处自定义注解的部分已被注释,直接放开注释就能使用(1)切面类 import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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.util.Arrays;Aspect Component public class WebLogAspect {// 获取日志类方便直接在控制台输出统一格式的日志信息private final static Logger logger LoggerFactory.getLogger(WebLogAspect.class);/*** 以 controller 包下定义的所有请求为切入点*/Pointcut(execution(public * com.tt.test.controller.*.*(..)))public void webLog() {}/*** 在切点之前织入** param joinPoint* throws Throwable*/Before(webLog()) // webLog():是你Pointcut注解的方法名public void doBefore(JoinPoint joinPoint) throws Throwable {// 开始打印请求日志ServletRequestAttributes attributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request attributes.getRequest();// 打印请求相关参数logger.info( Start );}/*** 在切点之后织入** throws Throwable*/After(webLog())public void doAfter() throws Throwable {logger.info( End );// 每个请求之间空一行logger.info();}/*** 环绕** param proceedingJoinPoint* return* throws Throwable*/Around(webLog())public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {long startTime System.currentTimeMillis();Object result proceedingJoinPoint.proceed();//获取自定义注解中传入的desc/*Signature signature proceedingJoinPoint.getSignature();MethodSignature methodSignature (MethodSignature) signature;Method method methodSignature.getMethod();EagleEye eagleEye method.getAnnotation(EagleEye.class);String desceagleEye.desc();logger.info(Request desc   : {}, desc);*/logger.info(Request Args   : {}, Arrays.asList(result).toString());// 执行耗时logger.info(Time-Consuming : {} ms, System.currentTimeMillis() - startTime);return result;} } (2)自定义注解 import java.lang.annotation.*;Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) Documented public interface EagleEye {//描述,默认为空String desc() default ; } (3)controller和serviceimpl 要想serviceimpl中的方法也被aop织入,需要把serviceimpl文件移动到controller文件夹中,因为切面类中定义了包扫描路径,或者不移动文件夹而是在切面类中定义切点的时候把serviceimpl的包路径也包含进去controllerimport com.tt.test.config.EagleEye; import com.tt.test.service.EagleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/** * 测试aop全局日志 */ RestController RequestMapping(/eagle) public class EagleController {Autowiredprivate EagleService eagleService;RequestMapping(/h1) //    EagleEye(desc hello1)public String h1(){return eagleService.h1();}RequestMapping(/h2) //    EagleEye(desc hello2)public String h2(){return eagleService.h2();} } serviceimpl实现类(service层接口省略)import com.tt.test.config.EagleEye; import com.tt.test.service.EagleService; import org.springframework.stereotype.Service;Service public class EagleServiceImpl implements EagleService {Override //    EagleEye(desc hello1-service)public String h1() {String ss1;return s;}Override //    EagleEye(desc hello2-service)public String h2() {String ss2;return s;} } 4.定义切点时包扫描路径的表达式怎么写
http://www.hkea.cn/news/14569533/

相关文章:

  • 做佣金单网站软件培训机构
  • 顺德网站建设咨询装修公司网站怎么做
  • wordpress 不同页面不同侧边栏青岛seo杭州厂商
  • 百度免费网站建设成全视频在线观看高清版
  • 怎么分析网站的外链建设情况网站顶部怎么做新浪链接
  • 叫人做网站要注意济南网站建设哪家便宜
  • 罗村建网站vi设计找哪家公司
  • 意大利设计网站国内特效网站
  • 杭州商城网站建设清水模板
  • 德维尔全屋定制官方网站wordpress缩略图 裁剪
  • 自主建站系统网上商城怎么推广
  • HTML和PHP怎么做网站wordpress上传后设置
  • 陕西网站建设报价wordpress文章排序错误
  • 网站建设怎么打广告如何做企业网站宣传
  • 网站怎么做边框七台河新闻联播视频
  • 公司做公司网站广告久久建筑网会员登录没有签到得金币了吗
  • 增加网站和接入备案有播放量就有收益的自媒体平台
  • 什么叫网站收录提交深圳成交型网站建设公司
  • 网站建设推广合同书wordpress 显示标题
  • 元素网站企业网站可概括为
  • 微信 绑定网站赣榆区建设局网站
  • 服装网站建设优点有哪些网站建设案例 央视网
  • 淘宝自己建的网站wordpress 中英文切换
  • 国外产品设计网站推荐东莞网站建设it s
  • 帝国cms企业网站wordpress后台编辑慢
  • 昆明网站网站建设手机对比网站
  • 朔州市2018年建设工程网站南通做公司网站
  • 微信公众号做电影网站做自媒体需要哪些网站
  • 电子商务网官方网站wordpress 上传按钮
  • 网站联盟平台建站之星和凡科建站哪个系统好