lis分析之一一批处理(任务)如何连接数据库的

public class ZFBCheckAccountTask extends TaskThread {
}

这个类运行时候自动加载了数据库连接,不明白是如何提前加载的,开始用static { } 去全局搜索,未果(现在觉得思路就不对,因为只加载了自己的类,所以只可能加载自己这个类的static{}方法;用提示语全局搜索未果,因为连接方法在依赖的jar包中;接着想到了他的父类TaskThread ,对父类进行断点跟踪, 在构造方法中

public TaskThread() {
        LDTaskParamDB tLDTaskParamDB = new LDTaskParamDB();
        tLDTaskParamDB.setTaskCode("000000");
        tLDTaskParamDB.setTaskPlanCode("000000");
        tLDTaskParamDB.setParamName("ServerType");
        if (tLDTaskParamDB.getInfo()) {

接着进入

tLDTaskParamDB.getInfo()
    public boolean getInfo() {
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        if (!this.mflag) {
            this.con = DBConnPool.getConnection();
        }

在DBConnPool类中有静态方法

 static {
        for(int nIndex = 0; nIndex < 63; ++nIndex) {
            dbConns[nIndex] = new DBConn();
        }

    }

接着进入DBConn类中,构造方法

    protected DBConn() {
        this.m_pw = new PrintWriter(this.m_buf, true);
        this.mGlobalPools = GlobalPools.getInstance();
        this.JUrl = new JdbcUrl();
        this.bNotInUse = true;
    }

在进入jdbcURl类中

 static {
        InputStream stream = JdbcUrl.class.getClassLoader().getResourceAsStream("jdbc.properties");
        Properties properties = new Properties();

        try {
            logger.info("【数据连接】开始加载数据库连接配置");
            properties.load(stream);
            JDBC_DB_TYPE = (String)properties.get("jdbc.DBType");
            JDBC_DB_NAME = (String)properties.get("jdbc.DBName");
            logger.info("【数据连接】对转码的数据库信息进行进行解码");
            JDBC_IP = ConfigSecret.decode((String)properties.get("jdbc.IP"));
            JDBC_PORT = ConfigSecret.decode((String)properties.get("jdbc.Port"));
            JDBC_USERNAME = ConfigSecret.decode((String)properties.get("jdbc.UserName"));
            JDBC_PASSWORD = ConfigSecret.decode((String)properties.get("jdbc.PassWord"));
            JDBC_DEFAULT_CONN = (String)properties.get("jdbc.DefaultConn");
            String fileConfigFlagStr = (String)properties.get("jdbc.fileConfigFlag");
            fileConfigFlag = Boolean.getBoolean(fileConfigFlagStr);
            logger.info("【数据连接】读取数据库连接完成,数据库连接地址" + JDBC_IP + ",数据库用户名:" + JDBC_USERNAME);
            logger.info("【数据连接】开始初始化数据库连接");
            initMultPool();
            logger.info("【数据连接】初始化数据库连接完成");
        } catch (Exception var11) {

这里就是的static 代码块读取了jdbc.prperties的属性

一文理解class.getClassLoader().getResourceAsStream(file)和ass.getResourceAsStream(file)区别

posted @ 2020-11-25 12:09  张艳涛&java  阅读(298)  评论(0编辑  收藏  举报