打破双亲委派机制之线程上下文类加载器
创作时间:
作者:
@小白创作中心
打破双亲委派机制之线程上下文类加载器
引用
CSDN
1.
https://m.blog.csdn.net/m0_68089732/article/details/137674906
线程上下文类加载器
在Java中,线程上下文类加载器(Thread Context ClassLoader)是一种特殊的类加载器,主要用于加载JDBC驱动、JNDI服务等。下面通过一个JDBC案例来说明其工作原理。
JDBC案例分析
DriverManager的使用
在JDBC中,
DriverManager用于管理项目中引入的不同数据库驱动,例如MySQL驱动和Oracle驱动。以下是使用DriverManager连接数据库的示例代码:package classloader.broken; import com.mysql.cj.jdbc.Driver; import java.sql.*; public class JDBCExample { static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; static final String DB_URL = "jdbc:mysql:///bank1"; static final String USER = "root"; static final String PASS = "123456"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { conn = DriverManager.getConnection(DB_URL, USER, PASS); stmt = conn.createStatement(); String sql = "SELECT id, account_name FROM account_info"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("account_name"); System.out.print("ID: " + id); System.out.print(", Name: " + name + "\n"); } rs.close(); stmt.close(); conn.close(); } catch (SQLException se) { se.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (stmt != null) stmt.close(); } catch (SQLException se2) {} try { if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } } } }类加载器分析
DriverManager类位于rt.jar包中,由启动类加载器(Bootstrap ClassLoader)加载。项目依赖中的MySQL驱动类由应用程序类加载器(Application ClassLoader)加载。
在
DriverManager类的初始化代码中,存在一个LoadInitialDrivers方法,该方法使用SPI机制加载所有实现了Driver接口的实现类。SPI机制通过在特定位置存放一个文件(文件名是接口名,内容包含实现类的类名)来定位实现类。这个过程使用了线程上下文类加载器(即应用程序类加载器)来加载类并创建对象。
双亲委派机制的讨论
关于JDBC案例是否打破了双亲委派机制,存在不同的观点:
观点一:在《深入理解Java虚拟机》一书中,作者周志明认为这种由启动类加载器加载的类,委派应用程序类加载器去加载类的方式,打破了双亲委派机制。
观点二:从类加载流程的角度分析,JDBC只是在
DriverManager加载完成后,通过初始化阶段触发了驱动类的加载。类的加载过程仍然遵循双亲委派机制。
因此,关于是否打破双亲委派机制这一问题,目前存在争议,读者可以根据自己的理解做出判断。
热门推荐
古诗词里的栀子花:爱情与纯洁的象征
大叶栀子花栽培秘籍:从土壤到病虫害防治全攻略
从专利局小职员到诺贝尔奖得主:爱因斯坦的传奇人生
爱因斯坦逝世40周年:相对论如何改变世界?
《爱因斯坦的宇宙》:一位伟大科学家的科学探索与哲学思考
科技改变生活:洗碗机的创新与发展历程
卖房子个税怎么算
房产税最新进展:2029年前完成改革任务,45%家庭将受影响
买卖二手房需缴土地增值税吗
黄连解毒汤:从千年古方到现代医学新宠
研究:气候变化使环境更热更潮湿 推高多数疾病感染风险
马头岩肉桂:中医养生中的调养良方
食品塑料包装分为哪几种?哪种更安全?
塑料原料及制品测试
走近塑料:从分类标识到可降解塑料
伦敦小学的健康饮食革命:从校餐到教育的全方位变革
德国“公共厨房”理念如何启发伦敦小学生饮食教育?
《Tatler》推荐:伦敦小学生在校午餐大揭秘
英国校餐法下的伦敦小学生午餐大揭秘
《白毛女》:老年人最爱的经典电影
高铁上的充电宝:你的旅途救星⚡️
2025 工作签证最新政策:如何前往日本工作?
【健康科普】八字方针 远离粉尘危害
白云机场升级"无陪儿童"服务,推出"飞行小达人"活动
无成人陪伴儿童机票年龄限制与购买流程
新疆四川两地文物再现古代丝路繁荣盛景
万米高空紧急救助,南航乘务组暖心守护无陪儿童
春运来了!高铁行李携带新规你了解吗?
高铁行李新规:这些变化你必须知道!
家人证实大S去世!病因曝光,最后一次露面还很精神