Browse Source

[Improvement-4971][alert|dao|service]Remove redundant PropertyUtils.class (#5020)

* [Improvement][alert|dao|service]
1. Remove redundant PropertyUtils.class (#4971)
2. Remove useless import package.

* [Improvement][alert|dao|service]
1. Remove redundant PropertyUtils.class (#4971)
2. Remove useless import package.

* [Improvement][alert|dao|service]
1. Remove redundant PropertyUtils.class (#4971)
2. Remove useless import package.

* [Improvement][alert|dao|service]
1. Remove redundant PropertyUtils.class (#4971)
2. Remove useless import package.
Ts686 4 years ago
parent
commit
6216817861

+ 5 - 3
dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/AlertServer.java

@@ -17,16 +17,17 @@
 
 package org.apache.dolphinscheduler.alert;
 
+import static org.apache.dolphinscheduler.alert.utils.Constants.ALERT_PROPERTIES_PATH;
 import static org.apache.dolphinscheduler.common.Constants.ALERT_RPC_PORT;
 
 import org.apache.dolphinscheduler.alert.plugin.AlertPluginManager;
-import org.apache.dolphinscheduler.common.plugin.DolphinPluginLoader;
-import org.apache.dolphinscheduler.common.plugin.DolphinPluginManagerConfig;
 import org.apache.dolphinscheduler.alert.processor.AlertRequestProcessor;
 import org.apache.dolphinscheduler.alert.runner.AlertSender;
 import org.apache.dolphinscheduler.alert.utils.Constants;
-import org.apache.dolphinscheduler.alert.utils.PropertyUtils;
+import org.apache.dolphinscheduler.common.plugin.DolphinPluginLoader;
+import org.apache.dolphinscheduler.common.plugin.DolphinPluginManagerConfig;
 import org.apache.dolphinscheduler.common.thread.Stopper;
+import org.apache.dolphinscheduler.common.utils.PropertyUtils;
 import org.apache.dolphinscheduler.dao.AlertDao;
 import org.apache.dolphinscheduler.dao.DaoFactory;
 import org.apache.dolphinscheduler.dao.entity.Alert;
@@ -140,6 +141,7 @@ public class AlertServer {
      * start
      */
     public void start() {
+        PropertyUtils.loadPropertyFile(ALERT_PROPERTIES_PATH);
         initPlugin();
         initRemoteServer();
         logger.info("alert server ready start ");

+ 0 - 262
dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/utils/PropertyUtils.java

@@ -1,262 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.dolphinscheduler.alert.utils;
-
-import static org.apache.dolphinscheduler.alert.utils.Constants.ALERT_PROPERTIES_PATH;
-
-import org.apache.dolphinscheduler.common.utils.IOUtils;
-import org.apache.dolphinscheduler.common.utils.StringUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-import java.util.regex.PatternSyntaxException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * property utils
- * single instance
- */
-public class PropertyUtils {
-
-    /**
-     * logger
-     */
-    private static final Logger logger = LoggerFactory.getLogger(PropertyUtils.class);
-
-    private static final Properties properties = new Properties();
-
-    /**
-     *  init properties
-     */
-    private static final PropertyUtils propertyUtils = new PropertyUtils();
-
-    private PropertyUtils() {
-        init();
-    }
-
-    private void init() {
-        String[] propertyFiles = new String[]{ALERT_PROPERTIES_PATH};
-        for (String fileName : propertyFiles) {
-            InputStream fis = null;
-            try {
-                fis = PropertyUtils.class.getResourceAsStream(fileName);
-                properties.load(fis);
-
-            } catch (IOException e) {
-                logger.error(e.getMessage(), e);
-                if (fis != null) {
-                    IOUtils.closeQuietly(fis);
-                }
-                System.exit(1);
-            } finally {
-                IOUtils.closeQuietly(fis);
-            }
-        }
-    }
-
-    /**
-     * get property value
-     *
-     * @param key property name
-     * @return the value
-     */
-    public static String getString(String key) {
-        if (StringUtils.isEmpty(key)) {
-            return null;
-        }
-        return properties.getProperty(key.trim());
-    }
-
-    /**
-     * get property value
-     *
-     * @param key        property name
-     * @param defaultVal default value
-     * @return property value
-     */
-    public static String getString(String key, String defaultVal) {
-        String val = properties.getProperty(key.trim());
-        return val == null ? defaultVal : val;
-    }
-
-    /**
-     * get property value
-     *
-     * @param key property name
-     * @return get property int value , if key == null, then return -1
-     */
-    public static int getInt(String key) {
-
-        return getInt(key, -1);
-    }
-
-    /**
-     * get int value
-     *
-     * @param key the key
-     * @param defaultValue the default value
-     * @return the value related the key or the default value if the key not existed
-     */
-    public static int getInt(String key, int defaultValue) {
-        String value = getString(key);
-        if (value == null) {
-            return defaultValue;
-        }
-
-        try {
-            return Integer.parseInt(value);
-        } catch (NumberFormatException e) {
-            logger.info(e.getMessage(), e);
-        }
-        return defaultValue;
-    }
-
-    /**
-     * get property value
-     *
-     * @param key property name
-     * @return the boolean result value
-     */
-    public static Boolean getBoolean(String key) {
-
-        if (StringUtils.isEmpty(key)) {
-            return false;
-        }
-
-        String value = properties.getProperty(key.trim());
-        if (null != value) {
-            return Boolean.parseBoolean(value);
-        }
-
-        return false;
-    }
-
-    /**
-     * get long value
-     *
-     * @param key the key
-     * @return if the value not existed, return -1, or will return the related value
-     */
-    public static long getLong(String key) {
-        return getLong(key, -1);
-    }
-
-    /**
-     * get long value
-     *
-     * @param key the key
-     * @param defaultVal the default value
-     * @return the value related the key or the default value if the key not existed
-     */
-    public static long getLong(String key, long defaultVal) {
-
-        String val = getString(key);
-        if (val == null) {
-            return defaultVal;
-        }
-
-        try {
-            return Long.parseLong(val);
-        } catch (NumberFormatException e) {
-            logger.info(e.getMessage(), e);
-        }
-
-        return defaultVal;
-    }
-
-    /**
-     * get double value
-     *
-     * @param key the key
-     * @return if the value not existed, return -1.0, or will return the related value
-     */
-    public static double getDouble(String key) {
-        return getDouble(key, -1.0);
-    }
-
-    /**
-     * get double value
-     *
-     * @param key the key
-     * @param defaultVal the default value
-     * @return the value related the key or the default value if the key not existed
-     */
-    public static double getDouble(String key, double defaultVal) {
-
-        String val = getString(key);
-        if (val == null) {
-            return defaultVal;
-        }
-
-        try {
-            return Double.parseDouble(val);
-        } catch (NumberFormatException e) {
-            logger.info(e.getMessage(), e);
-        }
-
-        return defaultVal;
-    }
-
-    /**
-     * get array
-     *
-     * @param key property name
-     * @param splitStr separator
-     * @return the result array
-     */
-    public static String[] getArray(String key, String splitStr) {
-        String value = getString(key);
-        if (value == null || StringUtils.isEmpty(splitStr)) {
-            return null;
-        }
-        try {
-            return value.split(splitStr);
-        } catch (PatternSyntaxException e) {
-            logger.info(e.getMessage(), e);
-        }
-        return null;
-    }
-
-    /**
-     * get enum
-     *
-     * @param key the key
-     * @param type the class type
-     * @param defaultValue the default value
-     * @param <T> the generic class type
-     * @return get enum value
-     */
-    public static <T extends Enum<T>> T getEnum(String key, Class<T> type,
-                                                T defaultValue) {
-        String val = getString(key);
-        if (val == null) {
-            return defaultValue;
-        }
-
-        try {
-            return Enum.valueOf(type, val);
-        } catch (IllegalArgumentException e) {
-            logger.info(e.getMessage(), e);
-        }
-
-        return defaultValue;
-    }
-}

+ 2 - 2
dolphinscheduler-alert/src/test/java/org/apache/dolphinscheduler/alert/plugin/AlertPluginManagerTest.java

@@ -19,7 +19,7 @@ package org.apache.dolphinscheduler.alert.plugin;
 
 import org.apache.dolphinscheduler.alert.AlertServer;
 import org.apache.dolphinscheduler.alert.utils.Constants;
-import org.apache.dolphinscheduler.alert.utils.PropertyUtils;
+import org.apache.dolphinscheduler.common.utils.PropertyUtils;
 import org.apache.dolphinscheduler.common.plugin.DolphinPluginLoader;
 import org.apache.dolphinscheduler.common.plugin.DolphinPluginManagerConfig;
 import org.apache.dolphinscheduler.spi.utils.StringUtils;
@@ -48,7 +48,7 @@ public class AlertPluginManagerTest {
         String path = Objects.requireNonNull(DolphinPluginLoader.class.getClassLoader().getResource("")).getPath();
         alertPluginManagerConfig.setPlugins(path + "../../../dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/pom.xml");
         if (StringUtils.isNotBlank(PropertyUtils.getString(AlertServer.ALERT_PLUGIN_DIR))) {
-            alertPluginManagerConfig.setInstalledPluginsDir(org.apache.dolphinscheduler.alert.utils.PropertyUtils.getString(AlertServer.ALERT_PLUGIN_DIR, Constants.ALERT_PLUGIN_PATH).trim());
+            alertPluginManagerConfig.setInstalledPluginsDir(PropertyUtils.getString(AlertServer.ALERT_PLUGIN_DIR, Constants.ALERT_PLUGIN_PATH).trim());
         }
 
         if (StringUtils.isNotBlank(PropertyUtils.getString(AlertServer.MAVEN_LOCAL_REPOSITORY))) {

+ 1 - 1
dolphinscheduler-alert/src/test/java/org/apache/dolphinscheduler/alert/plugin/EmailAlertPluginTest.java

@@ -20,7 +20,7 @@ package org.apache.dolphinscheduler.alert.plugin;
 import org.apache.dolphinscheduler.alert.AlertServer;
 import org.apache.dolphinscheduler.alert.runner.AlertSender;
 import org.apache.dolphinscheduler.alert.utils.Constants;
-import org.apache.dolphinscheduler.alert.utils.PropertyUtils;
+import org.apache.dolphinscheduler.common.utils.PropertyUtils;
 import org.apache.dolphinscheduler.common.enums.AlertStatus;
 import org.apache.dolphinscheduler.common.plugin.DolphinPluginLoader;
 import org.apache.dolphinscheduler.common.plugin.DolphinPluginManagerConfig;

+ 5 - 4
dolphinscheduler-alert/src/test/java/org/apache/dolphinscheduler/alert/utils/PropertyUtilsTest.java

@@ -23,6 +23,7 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
+import org.apache.dolphinscheduler.common.utils.PropertyUtils;
 import org.apache.dolphinscheduler.common.enums.ZKNodeType;
 
 import org.junit.Test;
@@ -119,15 +120,15 @@ public class PropertyUtilsTest {
     public void testGetDouble() {
 
         //Expected 3.0
-        double result = PropertyUtils.getDouble("test.server.factor");
+        double result = PropertyUtils.getDouble("test.server.factor", 3.0);
         assertEquals(3.0, result, 0);
 
         //If key is null, then return -1.0
-        result = PropertyUtils.getDouble(null);
+        result = PropertyUtils.getDouble(null, -1.0);
         assertEquals(-1.0, result, 0);
 
         //If key is undefine in alert.properties, then return -1
-        result = PropertyUtils.getDouble("abc");
+        result = PropertyUtils.getDouble("abc", -1.0);
         assertEquals(-1.0, result, 0);
 
         //If key is undefine in alert.properties, and there is a defaultval, then return defaultval
@@ -135,7 +136,7 @@ public class PropertyUtilsTest {
         assertEquals(5.0, result, 0);
 
         //If the value can not parse to double ,it will log the error and return -1.0
-        result = PropertyUtils.getDouble("test.server.testnumber");
+        result = PropertyUtils.getDouble("test.server.testnumber", -1.0);
         assertEquals(-1.0, result, 0);
     }
 

+ 10 - 6
dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/PropertyUtils.java

@@ -22,8 +22,6 @@ import static org.apache.dolphinscheduler.common.Constants.COMMON_PROPERTIES_PAT
 import org.apache.dolphinscheduler.common.Constants;
 import org.apache.dolphinscheduler.common.enums.ResUploadType;
 
-import org.apache.commons.io.IOUtils;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.HashMap;
@@ -51,7 +49,13 @@ public class PropertyUtils {
     }
 
     static {
-        String[] propertyFiles = new String[]{COMMON_PROPERTIES_PATH};
+        loadPropertyFile(COMMON_PROPERTIES_PATH);
+    }
+
+    /**
+     * init properties
+     */
+    public static synchronized void loadPropertyFile(String... propertyFiles) {
         for (String fileName : propertyFiles) {
             InputStream fis = null;
             try {
@@ -196,7 +200,7 @@ public class PropertyUtils {
      * @param defaultVal default value
      * @return property value
      */
-    public double getDouble(String key, double defaultVal) {
+    public static double getDouble(String key, double defaultVal) {
         String val = getString(key);
         return val == null ? defaultVal : Double.parseDouble(val);
     }
@@ -229,8 +233,8 @@ public class PropertyUtils {
      * @param <T> T
      * @return get enum value
      */
-    public <T extends Enum<T>> T getEnum(String key, Class<T> type,
-                                         T defaultValue) {
+    public static <T extends Enum<T>> T getEnum(String key, Class<T> type,
+                                                T defaultValue) {
         String val = getString(key);
         return val == null ? defaultValue : Enum.valueOf(type, val);
     }

+ 24 - 15
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/TaskRecordDao.java

@@ -14,27 +14,31 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.apache.dolphinscheduler.dao;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.PropertiesConfiguration;
+import static org.apache.dolphinscheduler.common.Constants.DATASOURCE_PROPERTIES;
+
 import org.apache.dolphinscheduler.common.Constants;
 import org.apache.dolphinscheduler.common.enums.TaskRecordStatus;
 import org.apache.dolphinscheduler.common.utils.CollectionUtils;
 import org.apache.dolphinscheduler.common.utils.ConnectionUtils;
 import org.apache.dolphinscheduler.common.utils.DateUtils;
+import org.apache.dolphinscheduler.common.utils.PropertyUtils;
 import org.apache.dolphinscheduler.common.utils.StringUtils;
 import org.apache.dolphinscheduler.dao.entity.TaskRecord;
-import org.apache.dolphinscheduler.dao.utils.PropertyUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
-import java.sql.*;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * task record dao
@@ -44,12 +48,17 @@ public class TaskRecordDao {
 
     private static Logger logger = LoggerFactory.getLogger(TaskRecordDao.class.getName());
 
+    static {
+        PropertyUtils.loadPropertyFile(DATASOURCE_PROPERTIES);
+    }
+
     /**
-     *  get task record flag
+     * get task record flag
+     *
      * @return whether startup taskrecord
      */
-    public static boolean getTaskRecordFlag(){
-       return PropertyUtils.getBoolean(Constants.TASK_RECORD_FLAG,false);
+    public static boolean getTaskRecordFlag() {
+        return PropertyUtils.getBoolean(Constants.TASK_RECORD_FLAG, false);
     }
 
     /**
@@ -132,7 +141,7 @@ public class TaskRecordDao {
      * count task record
      *
      * @param filterMap filterMap
-     * @param table     table
+     * @param table table
      * @return task record count
      */
     public static int countTaskRecord(Map<String, String> filterMap, String table) {
@@ -150,13 +159,13 @@ public class TaskRecordDao {
             sql += getWhereString(filterMap);
             pstmt = conn.prepareStatement(sql);
             rs = pstmt.executeQuery();
-            while (rs.next()){
+            while (rs.next()) {
                 count = rs.getInt("count");
                 break;
             }
         } catch (SQLException e) {
             logger.error("Exception ", e);
-        }finally {
+        } finally {
             ConnectionUtils.releaseResource(rs, pstmt, conn);
         }
         return count;
@@ -166,7 +175,7 @@ public class TaskRecordDao {
      * query task record by filter map paging
      *
      * @param filterMap filterMap
-     * @param table     table
+     * @param table table
      * @return task record list
      */
     public static List<TaskRecord> queryAllTaskRecord(Map<String, String> filterMap, String table) {
@@ -241,7 +250,7 @@ public class TaskRecordDao {
             }
         } catch (SQLException e) {
             logger.error("Exception ", e);
-        }finally {
+        } finally {
             ConnectionUtils.releaseResource(rs, pstmt, conn);
         }
         return recordList;

+ 44 - 33
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/SpringConnectionFactory.java

@@ -14,23 +14,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.apache.dolphinscheduler.dao.datasource;
 
-import com.alibaba.druid.pool.DruidDataSource;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.core.MybatisConfiguration;
-import com.baomidou.mybatisplus.core.config.GlobalConfig;
-import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
-import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.PropertiesConfiguration;
+import static org.apache.dolphinscheduler.common.Constants.DATASOURCE_PROPERTIES;
+
 import org.apache.dolphinscheduler.common.Constants;
-import org.apache.dolphinscheduler.dao.utils.PropertyUtils;
+import org.apache.dolphinscheduler.common.utils.PropertyUtils;
+
 import org.apache.ibatis.mapping.DatabaseIdProvider;
 import org.apache.ibatis.mapping.VendorDatabaseIdProvider;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.type.JdbcType;
+
+import java.util.Properties;
+
 import org.mybatis.spring.SqlSessionTemplate;
 import org.mybatis.spring.annotation.MapperScan;
 import org.slf4j.Logger;
@@ -41,7 +40,12 @@ import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
 import org.springframework.core.io.support.ResourcePatternResolver;
 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
 
-import java.util.Properties;
+import com.alibaba.druid.pool.DruidDataSource;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.core.MybatisConfiguration;
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
 
 
 /**
@@ -53,9 +57,13 @@ public class SpringConnectionFactory {
 
     private static final Logger logger = LoggerFactory.getLogger(SpringConnectionFactory.class);
 
+    static {
+        PropertyUtils.loadPropertyFile(DATASOURCE_PROPERTIES);
+    }
 
     /**
-     *  pagination interceptor
+     * pagination interceptor
+     *
      * @return pagination interceptor
      */
     @Bean
@@ -65,9 +73,10 @@ public class SpringConnectionFactory {
 
     /**
      * get the data source
+     *
      * @return druid dataSource
      */
-    @Bean(destroyMethod="")
+    @Bean(destroyMethod = "")
     public DruidDataSource dataSource() {
 
         DruidDataSource druidDataSource = new DruidDataSource();
@@ -76,30 +85,31 @@ public class SpringConnectionFactory {
         druidDataSource.setUrl(PropertyUtils.getString(Constants.SPRING_DATASOURCE_URL));
         druidDataSource.setUsername(PropertyUtils.getString(Constants.SPRING_DATASOURCE_USERNAME));
         druidDataSource.setPassword(PropertyUtils.getString(Constants.SPRING_DATASOURCE_PASSWORD));
-        druidDataSource.setValidationQuery(PropertyUtils.getString(Constants.SPRING_DATASOURCE_VALIDATION_QUERY,"SELECT 1"));
-
-        druidDataSource.setPoolPreparedStatements(PropertyUtils.getBoolean(Constants.SPRING_DATASOURCE_POOL_PREPARED_STATEMENTS,true));
-        druidDataSource.setTestWhileIdle(PropertyUtils.getBoolean(Constants.SPRING_DATASOURCE_TEST_WHILE_IDLE,true));
-        druidDataSource.setTestOnBorrow(PropertyUtils.getBoolean(Constants.SPRING_DATASOURCE_TEST_ON_BORROW,true));
-        druidDataSource.setTestOnReturn(PropertyUtils.getBoolean(Constants.SPRING_DATASOURCE_TEST_ON_RETURN,true));
-        druidDataSource.setKeepAlive(PropertyUtils.getBoolean(Constants.SPRING_DATASOURCE_KEEP_ALIVE,true));
-
-        druidDataSource.setMinIdle(PropertyUtils.getInt(Constants.SPRING_DATASOURCE_MIN_IDLE,5));
-        druidDataSource.setMaxActive(PropertyUtils.getInt(Constants.SPRING_DATASOURCE_MAX_ACTIVE,50));
-        druidDataSource.setMaxWait(PropertyUtils.getInt(Constants.SPRING_DATASOURCE_MAX_WAIT,60000));
-        druidDataSource.setMaxPoolPreparedStatementPerConnectionSize(PropertyUtils.getInt(Constants.SPRING_DATASOURCE_MAX_POOL_PREPARED_STATEMENT_PER_CONNECTION_SIZE,20));
-        druidDataSource.setInitialSize(PropertyUtils.getInt(Constants.SPRING_DATASOURCE_INITIAL_SIZE,5));
-        druidDataSource.setTimeBetweenEvictionRunsMillis(PropertyUtils.getLong(Constants.SPRING_DATASOURCE_TIME_BETWEEN_EVICTION_RUNS_MILLIS,60000));
-        druidDataSource.setTimeBetweenConnectErrorMillis(PropertyUtils.getLong(Constants.SPRING_DATASOURCE_TIME_BETWEEN_CONNECT_ERROR_MILLIS,60000));
-        druidDataSource.setMinEvictableIdleTimeMillis(PropertyUtils.getLong(Constants.SPRING_DATASOURCE_MIN_EVICTABLE_IDLE_TIME_MILLIS,300000));
-        druidDataSource.setValidationQueryTimeout(PropertyUtils.getInt(Constants.SPRING_DATASOURCE_VALIDATION_QUERY_TIMEOUT,3));
+        druidDataSource.setValidationQuery(PropertyUtils.getString(Constants.SPRING_DATASOURCE_VALIDATION_QUERY, "SELECT 1"));
+
+        druidDataSource.setPoolPreparedStatements(PropertyUtils.getBoolean(Constants.SPRING_DATASOURCE_POOL_PREPARED_STATEMENTS, true));
+        druidDataSource.setTestWhileIdle(PropertyUtils.getBoolean(Constants.SPRING_DATASOURCE_TEST_WHILE_IDLE, true));
+        druidDataSource.setTestOnBorrow(PropertyUtils.getBoolean(Constants.SPRING_DATASOURCE_TEST_ON_BORROW, true));
+        druidDataSource.setTestOnReturn(PropertyUtils.getBoolean(Constants.SPRING_DATASOURCE_TEST_ON_RETURN, true));
+        druidDataSource.setKeepAlive(PropertyUtils.getBoolean(Constants.SPRING_DATASOURCE_KEEP_ALIVE, true));
+
+        druidDataSource.setMinIdle(PropertyUtils.getInt(Constants.SPRING_DATASOURCE_MIN_IDLE, 5));
+        druidDataSource.setMaxActive(PropertyUtils.getInt(Constants.SPRING_DATASOURCE_MAX_ACTIVE, 50));
+        druidDataSource.setMaxWait(PropertyUtils.getInt(Constants.SPRING_DATASOURCE_MAX_WAIT, 60000));
+        druidDataSource.setMaxPoolPreparedStatementPerConnectionSize(PropertyUtils.getInt(Constants.SPRING_DATASOURCE_MAX_POOL_PREPARED_STATEMENT_PER_CONNECTION_SIZE, 20));
+        druidDataSource.setInitialSize(PropertyUtils.getInt(Constants.SPRING_DATASOURCE_INITIAL_SIZE, 5));
+        druidDataSource.setTimeBetweenEvictionRunsMillis(PropertyUtils.getLong(Constants.SPRING_DATASOURCE_TIME_BETWEEN_EVICTION_RUNS_MILLIS, 60000));
+        druidDataSource.setTimeBetweenConnectErrorMillis(PropertyUtils.getLong(Constants.SPRING_DATASOURCE_TIME_BETWEEN_CONNECT_ERROR_MILLIS, 60000));
+        druidDataSource.setMinEvictableIdleTimeMillis(PropertyUtils.getLong(Constants.SPRING_DATASOURCE_MIN_EVICTABLE_IDLE_TIME_MILLIS, 300000));
+        druidDataSource.setValidationQueryTimeout(PropertyUtils.getInt(Constants.SPRING_DATASOURCE_VALIDATION_QUERY_TIMEOUT, 3));
         //auto commit
-        druidDataSource.setDefaultAutoCommit(PropertyUtils.getBoolean(Constants.SPRING_DATASOURCE_DEFAULT_AUTO_COMMIT,true));
+        druidDataSource.setDefaultAutoCommit(PropertyUtils.getBoolean(Constants.SPRING_DATASOURCE_DEFAULT_AUTO_COMMIT, true));
         return druidDataSource;
     }
 
     /**
      * * get transaction manager
+     *
      * @return DataSourceTransactionManager
      */
     @Bean
@@ -109,6 +119,7 @@ public class SpringConnectionFactory {
 
     /**
      * * get sql session factory
+     *
      * @return sqlSessionFactory
      * @throws Exception sqlSessionFactory exception
      */
@@ -139,16 +150,16 @@ public class SpringConnectionFactory {
 
     /**
      * get sql session
+     *
      * @return SqlSession
-     * @throws Exception
      */
     @Bean
-    public SqlSession sqlSession() throws Exception{
+    public SqlSession sqlSession() throws Exception {
         return new SqlSessionTemplate(sqlSessionFactory());
     }
 
     @Bean
-    public DatabaseIdProvider databaseIdProvider(){
+    public DatabaseIdProvider databaseIdProvider() {
         DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
         Properties properties = new Properties();
         properties.setProperty("MySQL", "mysql");

+ 0 - 162
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/PropertyUtils.java

@@ -1,162 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dolphinscheduler.dao.utils;
-
-import org.apache.dolphinscheduler.common.Constants;
-import com.baomidou.mybatisplus.core.toolkit.IOUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-
-
-/**
- * property utils
- * single instance
- */
-public class PropertyUtils {
-
-    /**
-     * logger
-     */
-    private static final Logger logger = LoggerFactory.getLogger(PropertyUtils.class);
-
-    private static final Properties properties = new Properties();
-
-    private static final PropertyUtils propertyUtils = new PropertyUtils();
-
-    private PropertyUtils(){
-        init();
-    }
-
-    /**
-     * init
-     */
-    private void init(){
-        String[] propertyFiles = new String[]{Constants.DATASOURCE_PROPERTIES};
-        for (String fileName : propertyFiles) {
-            InputStream fis = null;
-            try {
-                fis = PropertyUtils.class.getResourceAsStream(fileName);
-                properties.load(fis);
-
-            } catch (IOException e) {
-                logger.error(e.getMessage(), e);
-                if (fis != null) {
-                    IOUtils.closeQuietly(fis);
-                }
-                System.exit(1);
-            } finally {
-                IOUtils.closeQuietly(fis);
-            }
-        }
-    }
-
-    /**
-     * get property value
-     * @param key property name
-     * @return get string value
-     */
-    public static String getString(String key) {
-        return properties.getProperty(key);
-    }
-
-    /**
-     * get property value
-     *
-     * @param key property name
-     * @param defaultVal default value
-     * @return property value
-     */
-    public static String getString(String key, String defaultVal) {
-        String val = properties.getProperty(key.trim());
-        return val == null ? defaultVal : val;
-    }
-
-    /**
-     * get property value
-     * @param key property name
-     * @return  get property int value , if key == null, then return -1
-     */
-    public static int getInt(String key) {
-        return getInt(key, -1);
-    }
-
-    /**
-     * get property value
-     * @param key key
-     * @param defaultValue defaultValue
-     * @return get property int value,if key == null ,then return  defaultValue
-     */
-    public static int getInt(String key, int defaultValue) {
-        String value = getString(key);
-        if (value == null) {
-            return defaultValue;
-        }
-
-        try {
-            return Integer.parseInt(value);
-        } catch (NumberFormatException e) {
-            logger.info(e.getMessage(),e);
-        }
-        return defaultValue;
-    }
-
-    /**
-     * get property value
-     *
-     * @param key property name
-     * @return property value
-     */
-    public static Boolean getBoolean(String key) {
-        String value = properties.getProperty(key.trim());
-        if(null != value){
-            return Boolean.parseBoolean(value);
-        }
-
-        return false;
-    }
-
-    /**
-     * get property value
-     *
-     * @param key property name
-     * @param defaultValue default value
-     * @return property value
-     */
-    public static Boolean getBoolean(String key, boolean defaultValue) {
-        String value = properties.getProperty(key.trim());
-        if(null != value){
-            return Boolean.parseBoolean(value);
-        }
-
-        return defaultValue;
-    }
-
-    /**
-     * get property long value
-     * @param key key
-     * @param defaultVal default value
-     * @return property value
-     */
-    public static long getLong(String key, long defaultVal) {
-        String val = getString(key);
-        return val == null ? defaultVal : Long.parseLong(val);
-    }
-}

+ 4 - 1
dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/quartz/QuartzExecutors.java

@@ -17,6 +17,7 @@
 
 package org.apache.dolphinscheduler.service.quartz;
 
+import static org.apache.dolphinscheduler.common.Constants.DATASOURCE_PROPERTIES;
 import static org.apache.dolphinscheduler.common.Constants.ORG_POSTGRESQL_DRIVER;
 import static org.apache.dolphinscheduler.common.Constants.ORG_QUARTZ_DATASOURCE_MYDS_CONNECTIONPROVIDER_CLASS;
 import static org.apache.dolphinscheduler.common.Constants.ORG_QUARTZ_JOBSTORE_ACQUIRETRIGGERSWITHINLOCK;
@@ -60,6 +61,7 @@ import static org.quartz.JobBuilder.newJob;
 import static org.quartz.TriggerBuilder.newTrigger;
 
 import org.apache.dolphinscheduler.common.utils.JSONUtils;
+import org.apache.dolphinscheduler.common.utils.PropertyUtils;
 import org.apache.dolphinscheduler.common.utils.StringUtils;
 import org.apache.dolphinscheduler.dao.entity.Schedule;
 import org.apache.dolphinscheduler.service.exceptions.ServiceException;
@@ -147,10 +149,11 @@ public class QuartzExecutors {
      */
     private void init() {
         try {
+            PropertyUtils.loadPropertyFile(DATASOURCE_PROPERTIES);
             StdSchedulerFactory schedulerFactory = new StdSchedulerFactory();
             Properties properties = new Properties();
 
-            String dataSourceDriverClass = org.apache.dolphinscheduler.dao.utils.PropertyUtils.getString(SPRING_DATASOURCE_DRIVER_CLASS_NAME);
+            String dataSourceDriverClass = PropertyUtils.getString(SPRING_DATASOURCE_DRIVER_CLASS_NAME);
             if (dataSourceDriverClass.equals(ORG_POSTGRESQL_DRIVER)) {
                 properties.setProperty(ORG_QUARTZ_JOBSTORE_DRIVERDELEGATECLASS, conf.getString(ORG_QUARTZ_JOBSTORE_DRIVERDELEGATECLASS, PostgreSQLDelegate.class.getName()));
             } else {