真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

工作小記:外置配置文件+多種數(shù)據(jù)庫(kù)支持-創(chuàng)新互聯(lián)

工作小記:外置配置文件+多種數(shù)據(jù)庫(kù)支持
  • 需求
  • 解決方案
    • 需求一
      • 解決思路
      • 涉及代碼
    • 需求二
      • 解決思路
      • 涉及代碼
    • 需求三
      • 解決思路
      • 涉及代碼
  • 注意

創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括漾濞網(wǎng)站建設(shè)、漾濞網(wǎng)站制作、漾濞網(wǎng)頁(yè)制作以及漾濞網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,漾濞網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到漾濞省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!需求
  1. 要部署到客戶的服務(wù)器上,需支持多種系統(tǒng),主要是windows、linux
  2. 支持jar包外的配置文件配置數(shù)據(jù)源信息
  3. 數(shù)據(jù)源支持多種數(shù)據(jù)庫(kù),主要是mysql、oracle、sqlserver
解決方案 需求一

要部署到客戶的服務(wù)器上,需支持多種系統(tǒng),主要是windows、linux

解決思路
  • 關(guān)注到win和linux的區(qū)別,其他都好說(shuō),就是路徑的分隔符需要區(qū)分一下
  • linux部署簡(jiǎn)單,但win需要部署成服務(wù),需要借助winsw,參考用winsw將jar包做成window后臺(tái)服務(wù)
涉及代碼

為解決分隔符問(wèn)題,先找方法區(qū)分操作系統(tǒng)

// 獲取操作系統(tǒng)名稱
String osName = System.getProperty("os.name");
// 區(qū)分操作系統(tǒng)
osName.startsWith("Windows");//Windows
osName.startsWith("Linux");//Linux
osName.startsWith("Mac");//Mac
需求二

支持jar包外的配置文件配置數(shù)據(jù)源信息

解決思路
  • 外置配置文件置于jar包相同目錄下,配置文件名稱定為datasource.properties,簡(jiǎn)單點(diǎn)
  • 獲取項(xiàng)目絕對(duì)路徑(注意此處就用到區(qū)分分隔符)
涉及代碼
private Properties getProperties() {Properties properties = new Properties();
        try {String path = System.getProperty("user.dir");
            String sp = "/";
            if (osName.startsWith("Windows")) {sp = "\\";
            }
            log.info("外部配置文件全路徑:{}", path + sp + "datasource.properties");
            FileInputStream inputStream = new FileInputStream(path + sp + "datasource.properties");

            properties.load(inputStream);
            inputStream.close();
        } catch (IOException e) {log.error("獲取外部配置失?。簕}", e.getMessage());
            throw new RuntimeException(e);
        }
        return properties;
    }

加載配置文件完成就可以加載數(shù)據(jù)源了

@Configuration
public class DataSourceConfig {@Bean
    public DataSource primaryDataSource() {Properties properties = getProperties();
        
        HikariConfig config = new HikariConfig();
        config.setDriverClassName(properties.getProperty("spring.datasource.database"));
        config.setJdbcUrl(properties.getProperty("spring.datasource.url")); //數(shù)據(jù)源url
        config.setUsername(properties.getProperty("spring.datasource.username")); //用戶名
        config.setPassword(properties.getProperty("spring.datasource.password")); //密碼
        
        config.addDataSourceProperty("cachePrepStmts", "true"); //是否自定義配置,為true時(shí)下面兩個(gè)參數(shù)才生效
        config.addDataSourceProperty("prepStmtCacheSize", "250"); //連接池大小默認(rèn)25,官方推薦250-500
        config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); //單條語(yǔ)句大長(zhǎng)度默認(rèn)256,官方推薦2048
//        config.addDataSourceProperty("useServerPrepStmts", "true"); //新版本MySQL支持服務(wù)器端準(zhǔn)備,開啟能夠得到顯著性能提升
        config.addDataSourceProperty("useLocalSessionState", "true");
        config.addDataSourceProperty("useLocalTransactionState", "true");
        config.addDataSourceProperty("rewriteBatchedStatements", "true");
        config.addDataSourceProperty("cacheResultSetMetadata", "true");
        config.addDataSourceProperty("cacheServerConfiguration", "true");
        config.addDataSourceProperty("elideSetAutoCommits", "true");
        config.addDataSourceProperty("maintainTimeStats", "false");

        HikariDataSource ds = new HikariDataSource(config);
        return ds;
    }
}
需求三

數(shù)據(jù)源支持多種數(shù)據(jù)庫(kù),主要是mysql、oracle、sqlserver

解決思路
  • 首先要引入依賴,數(shù)據(jù)庫(kù)驅(qū)動(dòng)
  • 為了方便實(shí)施人員,配置文件上只配置數(shù)據(jù)庫(kù)類型
涉及代碼
  1. 引入依賴
com.oracle.database.jdbcojdbc821.1.0.0com.oracle.database.nlsorai18n21.1.0.0com.microsoft.sqlservermssql-jdbc11.2.0.jre8mysqlmysql-connector-java8.0.28
  1. datasource.properties
spring.datasource.database=oracle #sqlserver、mysql
spring.datasource.url=jdbc:oracle:thin:@ip:port/xxx
spring.datasource.username=aaa
spring.datasource.password=bbb

需要注意的是數(shù)據(jù)庫(kù)url的格式是不同的

oracle:jdbc:oracle:thin:@ip:port/sid
mysql:jdbc:mysql://ip:port/databaseName
sqlserver:jdbc:sqlserver://ip:port;Database=databaseName
  1. DataSourceConfig.java修改如下
@Bean
    public DataSource primaryDataSource() {Properties properties = getProperties();
        String driver;
        if ("oracle".equalsIgnoreCase(properties.getProperty("spring.datasource.database"))) {driver = "oracle.jdbc.OracleDriver";
        } else if ("sqlserver".equalsIgnoreCase(properties.getProperty("spring.datasource.database"))) {driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        } else {driver = "com.mysql.cj.jdbc.Driver";
        }

        HikariConfig config = new HikariConfig();
        config.setDriverClassName(driver);
        config.setJdbcUrl(properties.getProperty("spring.datasource.url")); //數(shù)據(jù)源url
        config.setUsername(properties.getProperty("spring.datasource.username")); //用戶名
        config.setPassword(properties.getProperty("spring.datasource.password")); //密碼

        HikariDataSource ds = new HikariDataSource(config);
        return ds;
    }
注意

若連接SQL server報(bào)如下錯(cuò):
com.microsoft.sqlserver.jdbc.SQLServerException: 驅(qū)動(dòng)程序無(wú)法通過(guò)使用安全套接字層(SSL)加密與 SQL Server 建立 安全連接

首先,查一下SQL server版本與驅(qū)動(dòng)版本是否對(duì)應(yīng),【微笑】SQL server就是好用
其次,根據(jù)此鏈接,在url后添加trustServerCertificate=true即可,為了方便實(shí)施人員,DataSourceConfig.java修改如下

@Bean
    public DataSource primaryDataSource() {Properties properties = getProperties();
        String driver;
        String url = properties.getProperty("spring.datasource.url");
        if ("oracle".equalsIgnoreCase(properties.getProperty("spring.datasource.database"))) {driver = "oracle.jdbc.OracleDriver";
        } else if ("sqlserver".equalsIgnoreCase(properties.getProperty("spring.datasource.database"))) {driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
            url += ";encrypt=true;trustServerCertificate=true";
        } else {driver = "com.mysql.cj.jdbc.Driver";
        }

        HikariConfig config = new HikariConfig();
        config.setDriverClassName(driver);
        config.setJdbcUrl(url); //數(shù)據(jù)源url
        config.setUsername(properties.getProperty("spring.datasource.username")); //用戶名
        config.setPassword(properties.getProperty("spring.datasource.password")); //密碼

        HikariDataSource ds = new HikariDataSource(config);
        return ds;
    }

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


分享題目:工作小記:外置配置文件+多種數(shù)據(jù)庫(kù)支持-創(chuàng)新互聯(lián)
文章路徑:http://weahome.cn/article/dcsipe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部