关于ClassLoader的使用

了解ClassLoader:

这里写图片描述

    /*
     * 了解类的加载器:ClassLoader
     * 
     */
@Test
    public void testClassLoader() {
        // 获取到系统类加载器,加载用户自己创建类
        ClassLoader loader = ClassLoader.getSystemClassLoader();
        System.out.println(loader);

        // 获取到扩展类加载器,加载D:jdk1.6.0_45jrelibext目录下的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 + "
password=" + password
                + "
driverClass=" + driverClass + "
url" + 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 + "
password=" + password2
                + "
driverClass=" + driverClass2 + "
url" + 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 + "
password=" + password3
                + "
driverClass=" + driverClass3 + "
url" + url3);
    }
原文地址:https://www.cnblogs.com/lisingshen/p/7499734.html