关于ClassLoader的使用
2024-08-31 20:10:51
了解ClassLoader:
/*
* 了解类的加载器:ClassLoader
*
*/
@Test
public void testClassLoader() {
// 获取到系统类加载器,加载用户自己创建类
ClassLoader loader = ClassLoader.getSystemClassLoader();
System.out.println(loader);
// 获取到扩展类加载器,加载D:\jdk1.6.0_45\jre\lib\ext目录下的jar包
ClassLoader loader2 = loader.getParent();
System.out.println(loader2);
// 引导类加载器,获取不到
ClassLoader loader3 = loader2.getParent();
System.out.println(loader3);
}
// 举例:对于自定义类,是使用系统类加载器加载
String className = "com.atguigu.java.Person";
ClassLoader classLoader = Class.forName(className).getClassLoader();
System.out.println(classLoader);
className = "java.lang.String";
classLoader = Class.forName(className).getClassLoader();
System.out.println(classLoader);
关于ClassLoader加载器的一个使用,需要掌握
包结构:
================================
jdbc.properties:
jdbc.user=root
jdbc.password=root
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/jdbc1
#jdbc.user=scott
#jdbc.password=tiger
#jdbc.driverClass=oracle.jdbc.driver.OracleDriver
#jdbc.jdbcUrl=jdbc:oracle:thin:@127.0.0.1:1521:ORCL001
/*
* 关于ClassLoader加载器的一个使用,需要掌握
*/
@Test
public void testClassLoader1() throws IOException {
// 方式一:读取当前工程下的配置文件jdbc.properties
Properties properties = new Properties();
FileInputStream inStream = new FileInputStream(new File(
"jdbc.properties"));
properties.load(inStream);
String user = properties.getProperty("jdbc.user");
String password = properties.getProperty("jdbc.password");
String driverClass = properties.getProperty("jdbc.driverClass");
String url = properties.getProperty("jdbc.jdbcUrl");
System.out.println("user=" + user + "\npassword=" + password
+ "\ndriverClass=" + driverClass + "\nurl" + url);
System.out.println("============================");
=====================================================
// 方式二:读取src目录下的配置文件
Properties properties2 = new Properties();
// InputStream inputStream =
// ReflectTest.class.getClassLoader().getResourceAsStream("jdbc1.properties");
InputStream inputStream = this.getClass().getClassLoader()
.getResourceAsStream("jdbc1.properties");
properties2.load(inputStream);
String user2 = properties2.getProperty("jdbc.user");
String password2 = properties2.getProperty("jdbc.password");
String driverClass2 = properties2.getProperty("jdbc.driverClass");
String url2 = properties2.getProperty("jdbc.jdbcUrl");
System.out.println("user=" + user2 + "\npassword=" + password2
+ "\ndriverClass=" + driverClass2 + "\nurl" + url2);
System.out.println("============================");
===============================================
// 方式三:读包目录下的配置文件
Properties properties3 = new Properties();
// InputStream inputStream2 = this.getClass().getClassLoader()
// .getResourceAsStream("com/atguigu/java/jdbc2.properties");
InputStream inputStream2 = this.getClass().getClassLoader()
.getResourceAsStream("com\\atguigu\\java\\jdbc2.properties");
properties3.load(inputStream2);
String user3 = properties3.getProperty("jdbc.user");
String password3 = properties3.getProperty("jdbc.password");
String driverClass3 = properties3.getProperty("jdbc.driverClass");
String url3 = properties3.getProperty("jdbc.jdbcUrl");
System.out.println("user=" + user3 + "\npassword=" + password3
+ "\ndriverClass=" + driverClass3 + "\nurl" + url3);
}
最新文章
- centos6配置网卡
- 太阳系Demo(openGL)
- [MySQL]load data local infile向MySQL数据库中导入数据时,无法导入和字段不分离问题。
- leetcode 题解:Binary Tree Level Order Traversal (二叉树的层序遍历)
- ENVI Services Engine5.1 应用开发入门教程
- 《Linux内核修炼之道》 之 高效学习Linux内核
- 【转载】深入浅出http请求
- 第2次作业:软件分析之Steam
- Jmeter使用JDBC请求简介
- JDK源码分析(4)之 LinkedList 相关
- form编码方式application/x-www-form-urlencoded和multipart/form-data的区别
- 【Sichuan 2017D】Dynamic Graph
- Asp.net core 学习笔记 (授权)
- Entity Framework数据库初始化
- UVALive - 4094 WonderTeam (贪心)
- go语言之进阶篇正则表达式
- 2018C语言助教总结
- socket.io带中文时客户端无法响应
- ASP.Net ListBox DropdownList 不同条目设置背景色和字体颜色( 转· 载 )
- Java发邮件带附件(且重命名附件)
热门文章
- node爬虫的几种简易实现方式
- [WPF自定义控件库] 给WPF一个HyperlinkButton
- DFS树求割点问题
- YARN底层基础库
- PHPstorm 运行时出现 Not Fount 解决办法
- 【sybase】You can’t run SELECT INTO in this database的解决办法
- 用jquery uploadify上传插件上传文件
- hdu-6579 Operation
- Codeforces Round #506 (Div. 3) 1029 D. Concatenated Multiples
- HDU 4322Candy 最大费用最大流