SPRING03_AOP的概述、动态代理、cglib代理、相关概念、基于xml配置、基于注解配置(二)

简介: SPRING03_AOP的概述、动态代理、cglib代理、相关概念、基于xml配置、基于注解配置(二)

③. cglib的动态代理


  • ①. 目标类


  public class Target {
      public void method() {
          System.out.println("Target running....");
      }
  }


②. 动态代理代码


  Target target = new Target(); //创建目标对象
  Enhancer enhancer = new Enhancer();   //创建增强器
  enhancer.setSuperclass(Target.class); //设置父类
  enhancer.setCallback(new MethodInterceptor() { //设置回调
      @Override
      public Object intercept(Object o, Method method, Object[] objects, 
      MethodProxy methodProxy) throws Throwable {
          System.out.println("前置代码增强....");
          Object invoke = method.invoke(target, objects);
          System.out.println("后置代码增强....");
          return invoke;
      }
  });
  Target proxy = (Target) enhancer.create(); //创建代理对象


③. 调用代理对象的方法测试


  //测试,当调用接口的任何方法时,代理对象的代码都无序修改
  proxy.method();


微信图片_20220108213626.png


  • ④. JDK代理和cglib代理的区别


  1. JDK动态代理只能对实现了接口的类生成代理,而不能针对类


  1. CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法因为是继承,所以该类或方法最好不要声明成final



微信图片_20220108213644.png


④. AOP的相关概念


①. Target(目标对象):被增强的对象(这里是UserDaoImpl)


②. Proxy (代理):被应用增强后,产生一个代理对象,是一个代理的对象


③.Joinpoint(连接点):指的是可以被拦截到的点

(增删改查这些方法都可以被增强,这些方法称为是连接点)


④. Pointcut(切入点):指的是真正被拦截到的点

(只想对save方法进行增强(做权限校验),save方法称为是切入点)


⑤. Advice(通知/ 增强):拦截后要做的事情


⑥. Aspect(切面):是切入点和通知(引介)的组合,是一个类


⑦. Weaving(织入):是切入点和通知的组合


  @AfterReturning(value="execution(* com.xiaozhi.annotation.*.*(..))")
  public void afterRetruning(){
    System.out.println("后置通知");
  }



相关文章
|
8天前
|
XML 前端开发 Java
一文搞懂 Spring Boot 自动配置原理
Spring Boot 自动配置原理揭秘:通过 `@EnableAutoConfiguration` 加载 `META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` 中的配置类,结合 `@Conditional` 按条件注入 Bean,实现“开箱即用”。核心在于约定大于配置,简化开发。
183 0
|
1月前
|
Java 关系型数据库 MySQL
Spring Boot自动配置:魔法背后的秘密
Spring Boot 自动配置揭秘:只需简单配置即可启动项目,背后依赖“约定大于配置”与条件化装配。核心在于 `@EnableAutoConfiguration` 注解与 `@Conditional` 系列条件判断,通过 `spring.factories` 或 `AutoConfiguration.imports` 加载配置类,实现按需自动装配 Bean。
|
1月前
|
缓存 监控 Java
SpringBoot @Scheduled 注解详解
使用`@Scheduled`注解实现方法周期性执行,支持固定间隔、延迟或Cron表达式触发,基于Spring Task,适用于日志清理、数据同步等定时任务场景。需启用`@EnableScheduling`,注意线程阻塞与分布式重复问题,推荐结合`@Async`异步处理,提升任务调度效率。
417 128
|
12天前
|
前端开发 Java 应用服务中间件
《深入理解Spring》 Spring Boot——约定优于配置的革命者
Spring Boot基于“约定优于配置”理念,通过自动配置、起步依赖、嵌入式容器和Actuator四大特性,简化Spring应用的开发与部署,提升效率,降低门槛,成为现代Java开发的事实标准。
|
20天前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
191 2
|
1月前
|
XML Java 数据格式
常用SpringBoot注解汇总与用法说明
这些注解的使用和组合是Spring Boot快速开发和微服务实现的基础,通过它们,可以有效地指导Spring容器进行类发现、自动装配、配置、代理和管理等核心功能。开发者应当根据项目实际需求,运用这些注解来优化代码结构和服务逻辑。
213 12
|
1月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
367 4
|
14天前
|
监控 Java Spring
AOP 切面编程
AOP(面向切面编程)通过动态代理在不修改源码的前提下,对方法进行增强。核心概念包括连接点、通知、切入点、切面和目标对象。常用于日志记录、权限校验、性能监控等场景,结合Spring AOP与@Aspect、@Pointcut等注解,实现灵活的横切逻辑管理。
272 6
AOP 切面编程
|
1月前
|
XML 安全 Java
使用 Spring 的 @Aspect 和 @Pointcut 注解简化面向方面的编程 (AOP)
面向方面编程(AOP)通过分离横切关注点,如日志、安全和事务,提升代码模块化与可维护性。Spring 提供了对 AOP 的强大支持,核心注解 `@Aspect` 和 `@Pointcut` 使得定义切面与切入点变得简洁直观。`@Aspect` 标记切面类,集中处理通用逻辑;`@Pointcut` 则通过表达式定义通知的应用位置,提高代码可读性与复用性。二者结合,使开发者能清晰划分业务逻辑与辅助功能,简化维护并提升系统灵活性。Spring AOP 借助代理机制实现运行时织入,与 Spring 容器无缝集成,支持依赖注入与声明式配置,是构建清晰、高内聚应用的理想选择。
333 0
|
12天前
|
XML Java 数据格式
《深入理解Spring》:AOP面向切面编程深度解析
Spring AOP通过代理模式实现面向切面编程,将日志、事务等横切关注点与业务逻辑分离。支持注解、XML和编程式配置,提供五种通知类型及丰富切点表达式,助力构建高内聚、低耦合的可维护系统。

热门文章

最新文章