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("后置通知");
  }



相关文章
|
6月前
|
XML 安全 Java
使用 Spring 的 @Aspect 和 @Pointcut 注解简化面向方面的编程 (AOP)
面向方面编程(AOP)通过分离横切关注点,如日志、安全和事务,提升代码模块化与可维护性。Spring 提供了对 AOP 的强大支持,核心注解 `@Aspect` 和 `@Pointcut` 使得定义切面与切入点变得简洁直观。`@Aspect` 标记切面类,集中处理通用逻辑;`@Pointcut` 则通过表达式定义通知的应用位置,提高代码可读性与复用性。二者结合,使开发者能清晰划分业务逻辑与辅助功能,简化维护并提升系统灵活性。Spring AOP 借助代理机制实现运行时织入,与 Spring 容器无缝集成,支持依赖注入与声明式配置,是构建清晰、高内聚应用的理想选择。
653 0
|
12月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `<appender>` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `<logger>` 和 `<root>` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
2817 1
|
12月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
715 0
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
294 69
|
XML Java 数据格式
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
本文介绍了在使用Spring框架时,如何通过创建`applicationContext.xml`配置文件来管理对象。首先,在resources目录下新建XML配置文件,并通过IDEA自动生成部分配置。为完善配置,特别是添加AOP支持,可以通过IDEA的Live Templates功能自定义XML模板。具体步骤包括:连续按两次Shift搜索Live Templates,配置模板内容,输入特定前缀(如spring)并按Tab键即可快速生成完整的Spring配置文件。这样可以大大提高开发效率,减少重复工作。
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
459 6
|
SQL 缓存 Java
MyBatis如何关闭一级缓存(分注解和xml两种方式)
MyBatis如何关闭一级缓存(分注解和xml两种方式)
667 5
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
359 1
|
XML Java 数据格式
Spring5系列(九) | spring动态代理详解
Spring5系列(九) | spring动态代理详解
391 0
Spring5系列(九) | spring动态代理详解
|
8月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
1205 0

热门文章

最新文章