国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

mybatis使用spring-druid數據源連接池配置log4j打印sql語句以及開啟監控平臺

wenyiweb / 2302人閱讀

摘要:開啟德魯伊過濾,用于采集關聯監控的數據對除了靜態資源外底所有路由進行監控,該監控采集關聯監控的數據。而前面對數據源監控的配置,大部分是監控。

雜七雜的雜

作為程序員,開發工程中,一套利于測試或者監控的工具很重要,mybatis默認沒有提供log4j的打印sql語句的配置。

這對于開發rest服務,提供接口的開發者而言,是在很不好做,再加上mybatis很靈活,使用腳本動態生成sql語句,因此,有時候真不知道運行的sql是不是我們所期望的,過濾的條件是否起作用。

所幸,德魯伊監控平臺是個不錯的選擇,在性能方面druid連接池也比spring原生的要好,因此也是很多企業開發的首選數據源配置。

在引言階段,我們先看看目前我配置的結果是否是你想要的,如果不是你所期望的,就別浪費時間往下面看,畢竟大家都時間有限,沒必要花費時間看一些對自己沒用的東西。

控制臺打印的日志,慎重的告訴你,這種大量打印信息不能用于生產壞境,生產環境中這些信息寫到tomcat的日志文件中了{tomcat的目錄}/logs/catalina.out,如果訪問量很大的時候,一天產生幾個GB的日志不是問題--慎用。

[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Connection: {conn-10001} pool-connect
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Statement: {conn-10001, pstmt-20025} created. 
select * from t_login_register_st  WHERE 1 = 1   and ltime >= ?  order by ltime desc limit ?, ?
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Statement: {conn-10001, pstmt-20025} Parameters : [1463414400, 0, 15]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Statement: {conn-10001, pstmt-20025} Types : [BIGINT, INTEGER, INTEGER]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Statement: {conn-10001, pstmt-20025} executed. 6.503031 millis. 
select * from t_login_register_st  WHERE 1 = 1   and ltime >= ?  order by ltime desc limit ?, ?
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} open
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Header: [ltime, login_register, register, register_sent_code, register_edit, register_edit_publish, register_edit_succ, login, foget_passwd, foget_passwd_sent_code, login_succ, login_fail, login_succ_normal, login_succ_qq, login_succ_wx, login_succ_wb, login_succ_foget_passwd, login_fail_normal, login_fail_qq, login_fail_wx, login_fail_wb, login_fail_foget_passwd]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1464624000, 604, 216, 117, 113, 109, 106, 931, 59, 9, 790, 150, 279, 148, 254, 93, 32, 117, 9, 26, 2, 2]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1464537600, 639, 241, 132, 125, 121, 114, 998, 40, 11, 844, 130, 312, 168, 268, 87, 24, 107, 5, 18, 2, 2]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1464451200, 674, 322, 175, 170, 160, 155, 1087, 46, 11, 923, 143, 310, 164, 339, 96, 26, 114, 6, 25, 3, 1]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1464364800, 794, 371, 187, 182, 168, 162, 1330, 73, 17, 1153, 178, 307, 257, 455, 120, 34, 137, 11, 25, 6, 3]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1464278400, 670, 295, 169, 162, 154, 118, 1197, 88, 12, 977, 229, 338, 185, 320, 120, 33, 135, 33, 54, 25, 1]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1464192000, 709, 308, 172, 163, 159, 120, 1214, 56, 8, 1065, 292, 383, 196, 349, 122, 30, 148, 54, 78, 30, 1]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1464105600, 666, 285, 153, 148, 141, 139, 1120, 75, 14, 970, 159, 328, 188, 294, 141, 38, 132, 11, 14, 3, 0]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1464019200, 586, 254, 146, 141, 136, 132, 1018, 60, 12, 884, 132, 307, 149, 295, 124, 31, 108, 3, 18, 3, 2]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1463932800, 548, 209, 110, 106, 106, 103, 910, 68, 13, 779, 135, 306, 123, 251, 87, 33, 120, 4, 14, 1, 1]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1463846400, 520, 197, 104, 100, 99, 94, 963, 46, 12, 827, 132, 289, 149, 261, 110, 26, 110, 4, 13, 5, 1]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1463760000, 627, 237, 142, 134, 129, 122, 1190, 80, 23, 999, 173, 348, 182, 304, 137, 45, 137, 11, 22, 3, 2]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1463673600, 678, 280, 150, 144, 133, 128, 1235, 75, 8, 1012, 184, 354, 187, 342, 126, 28, 153, 14, 16, 6, 1]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1463587200, 564, 230, 138, 135, 131, 126, 1063, 53, 11, 901, 122, 337, 161, 274, 116, 27, 102, 3, 15, 3, 4]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1463500800, 552, 212, 119, 112, 108, 106, 986, 46, 6, 833, 134, 332, 146, 254, 92, 23, 122, 6, 5, 1, 2]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [1463414400, 665, 234, 130, 124, 125, 121, 1165, 65, 13, 979, 159, 409, 143, 303, 116, 33, 145, 4, 6, 3, 2]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} closed
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Statement: {conn-10001, pstmt-20025} closed
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Connection: {conn-10001} pool-recycle

德魯伊監控平臺的視圖:

圖一 SQL監控

圖二 URI監控

重要的話,重復一遍,如果目前所寫對現在的你沒用,就算以后可能會用到,你也沒必要細看下面所述,到此你已經花費了很多時間了,時間是金錢,傷不起。

如果你堅持要看到這里,請收藏吧!

spring加載properties鍵值對

其實與spring的配置基本沒多大關系,但是因為其加載了數據庫的基本信息,所以兩個合在一起看一下。

spring-applicationContext.xml的部分配置:




    

    

    

    
        
        
        
            
                
                classpath:conf/properties/*.properties
            
        
    

properties文件的部分配置:

mysql.host=127.0.0.1 #你的數據庫主機
mysql.port=3306
mysql.database=test # 你的數據庫
mysql.user=test # 數據庫登錄用戶
mysql.pwd=123456 # 數據庫登錄密碼
mybatis.xml配置



    
    

    
    
        
    

    
    
    
    
          
        
        
        
        
        
        
        
        
        

        
        

        
        

        
        

        

        
        
        

        
        

        
        

        
        
        
        
        
        
            
                
                
            
        
        
        
    

    
    
        
        
        
        
        
    

    
        
        
    
    
    
    
    
    
        
            
            
            
            
            
            
        
    

    
        
            
        
    

    
    
        
        
        
        
    

    
        
        
    

上面的配置中,使用包裹的部分時今天配置的重點,其它的配置時開發中的基本配置,也就是說基本的必須配置,不配置不能使用到spring提供的一些特性,當然數據源是必須的配置,但是可以選擇spring的數據源連接,不一定是德魯伊的數據源連接池。

對于配種中看到的 注釋的部分更是本文講的重點,也就是要讓程序在控制臺打印mybatis的sql語句,這些配置很重要。


    
        
        
    

這里是以代理模式過濾stat和log的,所以用的兩個bean分別是stat監控,log日志記錄監控。

這句的配置才是在控制臺打印sql的重點,建議平時開發中,打開該配置,上線的時候關閉掉,原因就是上面提到的,寫日志很占空間。

關于druid數據源配置屬性的列表,請查看后面:druid連接池配置屬性列表詳解

web.xml配置


    
        contextConfigLocation
        classpath:META-INF/spring/*.xml
    
    
    
    
        log4jConfigLocation
        WEB-INF/classes/log4j.xml
    

    
        log4jRefreshInterval
        60000
    

    
    
        DruidWebStatFilter
        com.alibaba.druid.support.http.WebStatFilter
        
            exclusions
            /static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
        
        
        
        
            sessionStatMaxCount
            1000
        
        
        
            profileEnable
            true
        
        
        
        
        
    
    
        DruidWebStatFilter
        /*
    

    
    
        com.alibaba.dubbo.remoting.http.servlet.BootstrapListener
    

    
        org.springframework.web.context.ContextLoaderListener
    
    
    
        org.springframework.web.util.Log4jConfigListener
    

    
        dispatcher
        com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet
        1
    
    
        dispatcher
        /*
    

    
    
        DruidStatView
        com.alibaba.druid.support.http.StatViewServlet
        
            
            resetEnable
            true
        
        
            
            loginUsername
            druid
        
        
            
            loginPassword
            druid
        
    
    
        DruidStatView
        /druid/*
    

上面加了注解的配置,是本文配置的重點,其它配置不在這里講解。


    DruidWebStatFilter
    com.alibaba.druid.support.http.WebStatFilter
    
        exclusions
        /static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
    


    DruidWebStatFilter
    /*

druid對除了靜態資源外底所有路由進行監控,該監控采集web-jdbc關聯監控的數據。而前面對數據源監控的配置,大部分是sql監控。

    
    resetEnable
    true


    
    loginUsername
    druid


    
    loginPassword
    druid

如果你不希望別人直接查看你的監控,請把查看權限配置加上。如果監控平臺被一些不安分的家伙知道,網站面臨攻擊的可能性就很大,安全性不靠保障,所以建議配置賬戶信息。

過濾器中的配置,是用來定義我們的監控選項,在以上的監控配置中,上面這段xml代碼配置了一個最簡單的監控,并采用了大量的默認配置,如果你想使用更豐富的監控配置,可以在druid的github wiki上獲取更多的選項,地址:druid Filter 配置


    DruidStatView
    com.alibaba.druid.support.http.StatViewServlet


    DruidStatView
    /druid/*

這個是德魯伊監控平臺提供的servlet web服務,啟動服務器后,只需要在瀏覽器中輸入:http://127.0.0.1:8080/druid/即可訪問引言里面的幾個圖。

注意,路由根據自己的情況寫,如果你直接在idea中配置的,且idea中沒有配置context path的話,可以不用項目名。如果配置了,就用配置的名字,比如配置為test,則應該訪問http://127.0.0.1:8080/test/druid/。

在eclipse中,需要跟項目名的。假如項目時test0,則應該是http://127.0.0.1:8080/test0/druid/。當然了,如果不是這樣的話,聰明的你肯定會嘗試幾次其它形式的路由訪問了。

當然還的注意端口號,我這里面默認用了8080,如果你是8090,就換吧。

重軸戲:log4j.xml配置



    
    
        
            
        
    
    
        
        
        
            
        
    

    



    
    
    
        
    
    
        
    
    
        
    
    
        
    
    
        
    
    
    
    
    
    
    
        
        
        
        
    

上面的配置看上去很雜,但是有用的配置用了包裹起來了,其它的配置都是看網上的配置,有些對配置根本沒有,有些事spring數據源監控sql的配置,對于德魯伊,就包裹部分的足夠了,說這句話,并不是讓你放棄一些基本配置,基本配置永遠不能缺少。

druid連接池配置屬性列表詳解
配置 缺省值 說明
name 配置這個屬性的意義在于,如果存在多個數據源,監控的時候可以通過名字來區分開來。如果沒有配置,將會生成一個名字,格式是:”DataSource-” + System.identityHashCode(this)
jdbcUrl 連接數據庫的url,不同數據庫不一樣。例如:mysql : jdbc:mysql://10.20.153.104:3306/druid2;oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto
username 連接數據庫的用戶名
password 連接數據庫的密碼。如果你不希望密碼直接寫在配置文件中,可以使用ConfigFilter。詳細看這里:https://github.com/alibaba/dr...
driverClassName 根據url自動識別 這一項可配可不配,如果不配置druid會根據url自動識別dbType,然后選擇相應的driverClassName
initialSize 0 初始化時建立物理連接的個數。初始化發生在顯示調用init方法,或者第一次getConnection時
maxActive 8 最大連接池數量
maxIdle 8 已經不再使用,配置了也沒效果
minIdle 最小連接池數量
maxWait 獲取連接時最大等待時間,單位毫秒。配置了maxWait之后,缺省啟用公平鎖,并發效率會有所下降,如果需要可以通過配置useUnfairLock屬性為true使用非公平鎖。
poolPreparedStatements false 是否緩存preparedStatement,也就是PSCache。PSCache對支持游標的數據庫性能提升巨大,比如說oracle。在mysql5.5以下的版本中沒有PSCache功能,建議關閉掉。5.5及以上版本有PSCache,建議開啟。
maxOpenPreparedStatements -1 要啟用PSCache,必須配置大于0,當大于0時,poolPreparedStatements自動觸發修改為true。在Druid中,不會存在Oracle下PSCache占用內存過多的問題,可以把這個數值配置大一些,比如說100
validationQuery 用來檢測連接是否有效的sql,要求是一個查詢語句。如果validationQuery為null,testOnBorrow、testOnReturn、testWhileIdle都不會其作用。
testOnBorrow true 申請連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能。
testOnReturn false 歸還連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能
testWhileIdle false 建議配置為true,不影響性能,并且保證安全性。申請連接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。timeBetweenEvictionRunsMillis有兩個含義:1) Destroy線程會檢測連接的間隔時間 2) testWhileIdle的判斷依據,詳細看testWhileIdle屬性的說明
numTestsPerEvictionRun 不再使用,一個DruidDataSource只支持一個EvictionRun
minEvictableIdleTimeMillis
connectionInitSqls 物理連接初始化的時候執行的sql
exceptionSorter 根據dbType自動識別 當數據庫拋出一些不可恢復的異常時,拋棄連接
filters 屬性類型是字符串,通過別名的方式配置擴展插件,常用的插件有:監控統計用的filter:stat; 日志用的filter:log4j;防御sql注入的filter:wall;合并sql的filter:mergeStat
proxyFilters 類型是List,如果同時配置了filters和proxyFilters,是組合關系,并非替換關系
補充說明

前面說過,mybatis配置的時候,可以配置sqlSessionFactory的時候通過configLocation屬性可以指定mybatis的一些額外配置。

這里分享一段數據庫字段值為null時,不返回字段名,而我們希望的是不管值為什么,字段名都應該返回。配置如下:




    
        
        
    

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66023.html

相關文章

  • 如何有效地記錄 Java SQL 日志?

    摘要:本文主要介紹如何使用這個可以直接顯示完整的日志框架,希望對大家能有所幫助。當設置為或時,意味關閉記錄。 在常規項目的開發中可能最容易出問題的地方就在于對數據庫的處理了,在大部分的環境下,我們對數據庫的操作都是使用流行的框架,比如 Hibernate 、 MyBatis 等。由于各種原因,我們有時會想知道在這些框架下實際執行的 SQL 究竟是什么。 雖然 Hibernate 可以在配置...

    godiscoder 評論0 收藏0
  • 如何有效地記錄 Java SQL 日志?

    摘要:本文主要介紹如何使用這個可以直接顯示完整的日志框架,希望對大家能有所幫助。當設置為或時,意味關閉記錄。 在常規項目的開發中可能最容易出問題的地方就在于對數據庫的處理了,在大部分的環境下,我們對數據庫的操作都是使用流行的框架,比如 Hibernate 、 MyBatis 等。由于各種原因,我們有時會想知道在這些框架下實際執行的 SQL 究竟是什么。 雖然 Hibernate 可以在配置...

    FleyX 評論0 收藏0
  • 通過項目逐步深入了解Mybatis<一>

    摘要:解決方法使用數據庫連接池管理數據庫連接。向中設置參數,對占位符號位置和設置參數值,硬編碼在代碼中,同樣也不利于系統的維護。從中遍歷結果集數據時,存在硬編碼,將獲取表的字段進行硬編碼,不利于系統維護。 Mybatis Mybatis 和 SpringMVC 通過訂單商品案例驅動 官方中文地址:http://www.mybatis.org/mybati... 官方托管地址:https://...

    2bdenny 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<