Java 代理
文章平均质量分 93
走向自由
追随自己内心的声音,走向自由。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
代理专栏总结
通过以上知识点,可系统理解 Java 代理机制、Spring AOP 的核心原理及事务管理的实际应用,帮助排查开发中常见的事务不回滚等问题。原创 2025-04-26 19:14:39 · 793 阅读 · 0 评论 -
Spring 学习笔记之 @Transactional 异常不回滚汇总
使用springboot时,只要引入spring-jdbc/jpa相关的依赖后,在想要启用事务的方法上加上@Transactional注解就能开启事务,碰到异常就能自动回滚。大大的提高了编码的便捷性性,同时也不侵入代码,保持了代码的简洁性。默认情况下,Spring时使用的Spring AOP (mode=Mode.Proxy, proxyTargetClass=false)方式启动数据库事务拦截。只有了解清楚了具体背景,才能清除知道事务为什么在碰到异常时没有能够正确回滚。原创 2025-04-26 18:32:26 · 1679 阅读 · 0 评论 -
Spring 学习笔记之 @Transactinal实现原理
主要借助 Spring 的 AOP(面向切面编程)机制来达成事务管理。当一个方法被注解修饰时,Spring 会在该方法执行前后添加事务相关的处理逻辑,以保证方法内的数据库操作在一个统一的事务环境中进行。注解通过 Spring 的 AOP 机制,在目标方法执行前后插入事务管理逻辑,从而实现了数据库事务的自动管理。它大大简化了事务处理的代码,提升了开发效率。原创 2025-04-26 12:12:52 · 807 阅读 · 0 评论 -
Spring 学习笔记之 @Transactional详解
是 Spring 中用于声明式事务管理的核心注解。它允许开发者通过简单的注解方式,将事务管理逻辑与业务逻辑分离,从而简化事务的管理。2.1 作用注解用于声明事务的边界。它可以让 Spring 容器在方法执行前后自动管理事务的开启、提交和回滚。开启事务:在方法执行前,Spring 会创建一个新的事务(或加入已有的事务)。提交事务:如果方法正常执行完成,Spring 会提交事务。回滚事务:如果方法抛出异常,Spring 会根据配置决定是否回滚事务。2.2 使用场景通常用于服务层(@Service。原创 2025-04-19 11:13:16 · 1384 阅读 · 0 评论 -
Spring AOP 学习笔记之 Advice详解
定义:Advice 是 AOP 的核心概念之一,表示在特定的连接点(Join Point)上执行的代码逻辑。作用:通过 Advice,可以在方法调用前后、异常抛出时等位置插入自定义逻辑。原创 2025-04-15 14:15:00 · 1410 阅读 · 0 评论 -
Spring AOP 学习笔记之 常用注解
要在springboot中启用AOP,需要引入spring-boot-starter-aop依赖。原创 2025-04-14 13:07:33 · 1188 阅读 · 0 评论 -
Spring AOP学习笔记之 基本概念
在代码中,@Pointcut("execution(* org.derek.ctroller.*.*(..))") 定义了一个切入点,表示匹配 org.derek.ctroller 包及其子包下的所有方法。在代码中,execution(* org.derek.ctroller.*.*(..)) 定义了一个连接点,表示匹配 org.derek.ctroller 包及其子包下的所有方法。@After("log()"):无论方法是否抛出异常,都会执行的日志记录。Spring AOP 通过动态代理实现 AOP。原创 2025-04-11 12:59:03 · 567 阅读 · 0 评论 -
Java代理(六)当前主流动态代理框架性能对比
Java 类库带有一个代理工具包,允许创建实现一组给定接口的类。这个内置的代理供应商很方便,但也很有限。例如,上面提到的安全框架不能以这种方式实现,因为我们想要扩展类而不是接口。代码生成库是在 Java 早期实现的,遗憾的是它没有跟上 Java 平台的发展。尽管如此,cglib 仍然是一个非常强大的库,但它的积极发展变得相当模糊。出于这个原因,它的许多用户离开了 cglib。该库带有一个编译器,该编译器采用包含 Java 源代码的字符串,这些字符串在应用程序运行时被翻译成 Java 字节码。原创 2025-04-03 17:17:06 · 973 阅读 · 0 评论 -
Java代理(五)动态代理之ByteBuddy
try {功能:这是主要的拦截逻辑方法,负责拦截目标方法的调用并执行自定义逻辑。参数说明:@This Object obj:表示当前代理对象。@Origin Method method:表示被拦截的方法。@AllArguments Object[] args:表示被拦截方法的参数列表。这里可以不用实现某个固定的InvocationHandler或者MethodInterceptor类似的接口了,ByteBuddy自己自动匹配拦截。原创 2025-04-03 13:21:38 · 996 阅读 · 0 评论 -
Java代理(四)动态代理之CGLIB
JDK Dynamic Proxy 和 CGLib 是两种常用的代理技术,它们各自有不同的适用场景和局限性。原创 2025-04-02 13:49:58 · 1213 阅读 · 0 评论 -
Java代理(三)动态代理之JDK Dynamic Proxy
首先,需要定义一个或多个接口,代理对象将实现这些接口。在这个例子中,Calculator是一个接口。Proxy.newProxyInstance方法的内部工作原理可以总结为以下步骤:检查参数:确保传入的类加载器和接口数组不为空。生成代理类字节码:使用ProxyGenerator.generateProxyClass方法生成代理类的字节码。加载代理类:使用传入的类加载器将生成的代理类加载到JVM中。原创 2025-04-01 14:26:12 · 873 阅读 · 0 评论 -
Java 代理(二) 动态代理概述篇
动态代理是指在程序运行期间动态创建代理类和代理对象的方式。与静态代理不同,动态代理不需要在编译时定义代理类,而是通过反射机制在运行时生成代理类。动态代理的核心思想是“解耦”,它允许我们在不修改目标对象的情况下,为其添加额外的功能。JDK动态代理适合代理接口,而CGLIB动态代理适合代理没有接口的类。根据实际需求选择合适的代理方式即可。原创 2025-04-01 10:22:43 · 724 阅读 · 0 评论 -
Java 代理(一) 静态代理
静态代理模式中,代理类和目标类实现相同的接口,代理类持有目标类的实例,并通过代理类间接调用目标类的方法。代理类可以在方法执行前后添加额外的逻辑。静态代理模式适用于需要在目标类的基础上扩展功能的场景。它通过代理类封装目标类的行为,同时保持接口的一致性。例子代码很好地展示了静态代理模式的应用,通过代理类实现了性能监控的功能。原创 2025-03-28 20:36:50 · 866 阅读 · 0 评论
分享