首页 > 编程语言 >8. Java-AOP 面向切面编程

8. Java-AOP 面向切面编程

时间:2023-06-24 16:35:28浏览次数:43  
标签:www Java html 切面 https AOP com

专题使用汇总:

  1. Java-IDEA
  2. Java-Maven,依赖管理,私服 https://www.cnblogs.com/chenshaojun2008/p/17493632.html
  3. Java-IOC&DI
  4. Java-Mybatis连接池,动态sql https://www.cnblogs.com/chenshaojun2008/p/17496913.html
  5. Java-文件上传(本地和OSS)
  6. Java-登录校验JWT,过滤器,拦截器使用总结 https://www.cnblogs.com/chenshaojun2008/p/17500546.html
  7. Java-事务管理 https://www.cnblogs.com/chenshaojun2008/p/17500949.html
  8. Java-AOP https://www.cnblogs.com/chenshaojun2008/p/17501255.html
  9. IDEA 有用的插件使用汇总 记录 https://www.cnblogs.com/chenshaojun2008/p/17500940.html

8. Java-AOP

1.AOP:面向切面编程,就是面向特定方法编程。在不改变原有方法的基础上新增功能(功能增强,功能改变)
2.SpringAOP
3.SpringAOP 开发步骤;

一.使用场景:
1.记录操作日志
2.权限控制
3.事务管理
4.记录方法执行时间

二.优势
1.代码无浸入
2.减少重复代码
3.提高开发效率
4.维护方便

三.操作:执行流程,动态代理技术,生成动态代理对象(实现功能增强)
3.1 添加依赖在pom.xml

      <!--AOP-->
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-aop</artifactId>
       </dependency>
   </dependencies>

3.2 编写AOP程序:针对特定方法业务需要进行编程

@Slf4j
@Component
//@Aspect //AOP类
public class TimeAspect {

    //@Around("execution(* com.itheima.service.impl.DeptServiceImpl.*(..))") //切入点表达式,对所有类,接口记录执行时间
    @Around("com.itheima.aop.MyAspect1.pt()")
    public Object recordTime(ProceedingJoinPoint joinPoint) throws Throwable {
        //1. 记录开始时间
        long begin = System.currentTimeMillis();

        //2. 调用原始方法运行
        Object result = joinPoint.proceed(); 

        //3. 记录结束时间, 计算方法执行耗时
        long end = System.currentTimeMillis();
        log.info(joinPoint.getSignature()+"方法执行耗时: {}ms", end-begin);

        return result;
    }

}

四.核心概念
1.连接点: JoinPoint 可以被AOP控制的方法
2.通知:Advice 指那些重复的逻辑,即共性的功能
3.切入点:PointCut 匹配连接点的条件

  @Pointcut("execution(* com.itheima.service.impl.DeptServiceImpl.*(..))")
    public void pt(){}

    @Pointcut("execution(* com.itheima.service.DeptService.list()) || " +
            "execution(* com.itheima.service.DeptService.delete(java.lang.Integer))")
    private void pt(){}
  1. 切面:Aspect:描述通知和切入点的关系
    5.目标对象:Target 通知所应用的对象

标签:www,Java,html,切面,https,AOP,com
From: https://www.cnblogs.com/chenshaojun2008/p/17501255.html

相关文章

  • JavaScript学习笔记:Web Components
    组件的概念组件是对可重用的HTML与JS功能的封装。在没有组件的时候,同样的HTML结构会在文档中多次出现,使代码变得复杂。在使用组件封装后,就像使用一个HTML标签那样使用这些HTML结构,HTML文档变得清晰易维护。它主要由三项技术实现:CustomElement:自定义元素,JavaScriptWEBAP......
  • Java学习-流程控制介绍
    什么是流程控制呢,就是计算机在进行代码执行时,对于代码执行的顺序。这一章一笔带过吧,感觉有点基础。java中代码执行的顺序主要有三种:1.顺序执行2.分支执行(一般是有判断语句): 3.重复执行:这个一般就是用的循环,常用的三种循环分别是:while循环,do...while循环,for循环,我来举几个例......
  • java用main方法通过socket 接收实现http
    运行main方法后,可以接收http请求, 适合简单的服务器测试 代码如下:importjava.io.*;importjava.net.ServerSocket;importjava.net.Socket;publicclassDemo02{publicstaticvoidmain(String[]args)throwsIOException{finalServerSocketserverS......
  • Java程序设计实践
    Java程序设计实践Java训练集7~12总结与心得训练集链接前言:训练集7~12主要巩固了面向对象基础的继承、多态、接口等内容,考察了面向对象进阶的相关知识点,如覆盖,常用的容器。题目的综合性较强,难度适中。目录:设计与分析踩坑心得改进建议总结设计与分析1.课程成绩统计......
  • 深入理解Spring Boot:简化Java应用开发的利器
    这篇文章主要介绍了SpringBoot的理论知识和核心概念。【摘要】SpringBoot是一个用于简化Java应用开发的框架,通过提供自动化配置和约定优于配置的原则,使得开发人员可以快速构建独立、可执行的、生产级别的应用程序。本文将深入探讨SpringBoot的核心理论和关键概念,帮助读者更好......
  • java 异常处理,事务管理,事务共用,事务传递
    异常处理,事务管理,事务共用,事务传递1.在每个controller添加trycatch2.定义全局异常处理器/***全局异常处理器*/@RestControllerAdvicepublicclassGlobalExceptionHandler{@ExceptionHandler(Exception.class)//捕获所有异常publicResultex(Exception......
  • springboot 通过aop切面的方式打印controller 出入参数
    pom文件引入<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>定义切面类AspectConfigimportcom.alibaba.fastjson.JSONObject;importlombok.extern.slf4j.......
  • JavaScript 之 高级程序设计 基础篇 (一)
    导读此篇文章为作者拜读JavaScrpit第四版(红宝石)的笔记内容、适用于有经验的程序员阅读;作者java开发出身。在之前前后端不分离的时代使用esayUIJQuery的时代经常写js相关代码。现在前后端分离的时代;前端工程日新月异、各种框架层出不穷;万变不离其中;学好js才是根本;很喜欢并......
  • JavaScript基础
    JavaScript基础简介JavaScript是由网景公司发明,起初命名为LiveScript,后来由于SUN公司的介入更名为了JavaScript为了确保不同的浏览器上运行的JavaScript标准一致,所以几个公司共同定制了JS的标准名命名为ECMAScriptJS的特点解释型语言类似于C和Java的语法结构动态语言......
  • 详解Java反射机制
    前言反射(Reflection)是Java程序开发语言的特征之一,它允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性和方法。主要有两种方式:一种是“传统的”RTTI,它假定我们在编译时已经知道了所有的类型;另一种是“反射”机制,它允许我们在运行时发现和使用类的信息。本篇就......