动态代理和反射的基本学习
今天在跟着视频学习的时候发现老师讲的知识点都只简单的了解过但是没有深入学习,导致在跟着视频敲代码的时候完全不知道自己是在写什么东西。所以决定先把基础补一补再继续跟老师做项目。
打算先把自定义注解的编写和解析学好,想要学号这一块,又涉及到了Aop和java中反射的学习,那么话不多说,只要肯学习,这个难题就一定能解决。
先学习反射
反射设计到了动态代理的使用
定义:
什么是动态代理,就是无侵入式地给代码增添新的功能。
在 Java 中,反射(Reflection)是指在运行时检查或修改类、方法、字段等程序结构的能力。通过反射,可以在运行时获取类的信息、调用类的方法、访问或修改类的字段,而无需在编译时知道这些信息。
Java 的反射机制主要涉及以下几个核心类:
Class
类:表示类的字节码对象,在运行时表示和操作类的信息。Constructor
类:表示类的构造方法。Method
类:表示类的方法。Field
类:表示类的字段。
通过反射,可以动态地创建类的实例、调用类的方法、访问和修改类的字段,甚至可以在运行时动态加载新的类。反射在一些框架和工具中被广泛使用,例如 Spring 框架、JUnit 测试框架等。但是,由于反射是一种高级特性,过度使用反射可能会降低代码的可读性和性能,因此在使用反射时需要谨慎考虑。也就是封装的过深,导致别人看不懂你写的代码。
AOP(面向切面编程)和反射在 Java 中经常结合使用,它们之间存在以下联系:
-
AOP通过动态代理实现:AOP常常使用动态代理来实现横切关注点的织入。而反射是实现动态代理的一种常用手段,通过反射可以在运行时获取类的信息,并动态地创建代理对象。
-
反射获取方法和类的信息:AOP需要在特定的方法或类上进行切面织入,而要确定哪些方法或类需要被切面织入,就需要通过反射来获取方法和类的信息。反射可以获取方法和类的注解、修饰符、参数等信息,从而判断是否应该应用切面。
-
AOP在运行时通过反射操作对象:AOP常常需要在目标方法执行前后进行一些额外的操作,比如记录日志、检查权限等。这些操作涉及到对目标方法的调用以及对目标对象的访问和修改,而这些都可以通过反射来实现。
-
AOP和反射都能实现动态性:AOP和反射都具有动态性,可以在运行时改变程序的行为。AOP通过切面织入实现对程序流程的动态控制,而反射则可以在运行时动态地获取和修改类的信息,实现对程序结构的动态操作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)