class.forName()和classLoader的区别
Class.forName 和 classLoader都可以对类进行加载。ClassLoader就是遵循双亲委派机制调用启动类的类加载器:通过一个类的全限定名来描述此二进制字节流。获取到二进制流后放入jvm当中。Class.forName()实际上也是调用ClassLoader来实现的。
区别
Class.forName()会对加载的类进行初始化,静态块里的代码会被执行,JDBC使用它的原因是因为JDBC规范中明确要求Driver(数据库驱动)类必须向DriverManager注册自己。这段代码写在静态块中。
ClassLoader只是将类加载到jvm当中,springMVC的Ioc采用的就是ClassLoader。

本文深入探讨了Class.forName和ClassLoader在Java中的作用及区别。Class.forName不仅加载类,还会初始化类并执行静态代码块,而ClassLoader仅负责将类加载到JVM中。前者常用于JDBC,后者则被SpringMVC的IoC所采纳。
1547





