提起java的反射机制,大家都知道,但是初学者往往对反射机制的感知度是比较弱的。然而最近反射机制的应用很广泛。
反射机制是什么概念?大多都有介绍,指的是程序在运行状态中,能够加载一个只有类名的类,加载完之后会在堆上产生一个Class对象。通过这个 Class对象可以获得类的属性、方法和其他类信息。
实际场景呢,说2个。
1. spring框架中,可以通过读取配置文件,生成对象到ioc容器中,它是依赖注入的一种实现方式。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
比如上面这样,spring框架在读取配置的时候就是根据class类名,利用反射机制,创建出 sessionFactory 对象。
2.spring框架另外一个特性aop,面向切面编程。面向切面编程的本质是动态代理。代理的理解 ,用切入点(在spring-boot中是JoinPoint)来代理需要服务的方法,
而动态的实现则又用到了反射机制,具体实现我们则可以深入到spring框架的源码中学习。