คำนำ
ฉันไม่ได้อัปเดตบทความ Spring Boot Series เป็นเวลานาน คุณคิดว่าคุณยุ่งหรือไม่? นอกจากนี้ยังเป็นไปได้ว่าจุดสนใจของบางครั้งที่ผ่านมาอาจอยู่ในด้านอื่น ๆ เมื่อเร็ว ๆ นี้โครงการจำเป็นต้องพัฒนาโปรแกรม MINI ซึ่งเพิ่งใช้ Spring Boot เพื่อใช้บริการแบ็คเอนด์ กรณีรหัสที่เกี่ยวข้องจะถูกแชร์ในภายหลังเพื่อให้ทุกคนจะไม่สับสนเมื่อทำมินิโปรแกรมแบ็คเอนด์
ภายใต้ Spring Boot พูลเชื่อมต่อที่มีอยู่หลายแห่ง (DBCP, DBCP2, Tomcat, Hikari) มีให้โดยค่าเริ่มต้น แน่นอน Druid ไม่สนับสนุน Druid Druid มาจากพูลการเชื่อมต่อโอเพ่นซอร์สของอาลีบาบา มันให้ฟังก์ชั่นการตรวจสอบที่ยอดเยี่ยมมาก ให้ฉันแบ่งปันวิธีการรวมเข้ากับ Spring Boot
สภาพแวดล้อมเวอร์ชัน
Spring Boot 1.5.2.release, Druid 1.1.6, Jdk1.7
การรวมระบบ
เพิ่มการพึ่งพา pom.xml:
<!-jpa-> <การพึ่งพา> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Data-JPA </artifactid> <ArtIfactId> mysql-connector-java </artifactid> </perdency> <!-druid-> <การพึ่งพา> <roupid> com.alibaba </groupid>
กำหนดค่า application.properties:
#data แหล่งที่มา spring.datasource.url = jdbc: mysql: //192.168.1.66: 3306/Spring_boot? tasource.password = rootspring.datasource.driver-class-name = com.mysql.jdbc.driverspring.datasource.type = com.alibaba.druid.pool.druiddatasource# เริ่มต้นขนาดต่ำสุด, สปริงสูงสุด dataSource.initialSize = 1Spring.datasource.minidle = 3Spring.datasource.maxactive = 20# กำหนดค่าเวลาเพื่อให้การเชื่อมต่อหมดเวลาสปริง Spring.datasource.timeBetweenevictionRunsmillis = 60000# กำหนดเวลาขั้นต่ำสำหรับการเชื่อมต่อเพื่อความอยู่รอดในสระว่ายน้ำในมิลลิวินาที Spring.datasource.MinevictableidletItimeLis = 30000Spring.datasource.validationQuery = Select 'x'spring.datasource.testhialidle = truespring.datasource.testonborrow = falspring.datasource.testonreturn = false# เปิด pscache และระบุขนาดของ pscache ในแต่ละการเชื่อมต่อ spring.datasource.poolpropraperedstatements กำหนดค่าตัวกรองสำหรับการตรวจสอบสถิติที่สกัดกั้น หลังจากลบออกแล้วอินเตอร์เฟสการตรวจสอบ SQL ไม่สามารถนับได้ 'Wall' ใช้สำหรับ Firewall Spring.datasource.Filters = Stat, Wall, SLF4J# Open MergesQl ฟังก์ชั่นผ่านคุณสมบัติ ConnectProperties; slow SQL Records Spring.datasource.connectionProperties = druid.stat.mergesql = true; druid.stat.slowsqlmillis = 5000
กำหนดค่าไฟล์ yml (เลือกหนึ่งในสองด้านบน)
ฤดูใบไม้ผลิ: DataSource: URL: JDBC: MySQL: //192.168.1.66: 3306/Spring-Boot? useunicode = true & catreatencoding = UTF-8 & usessl = ชื่อผู้ใช้เท็จ: รหัสผ่านรูท com.alibaba.druid.pool.druiddatasource # ต่อไปนี้คือการตั้งค่าเพิ่มเติมสำหรับพูลการเชื่อมต่อซึ่งใช้กับแหล่งข้อมูลทั้งหมดด้านบน # เริ่มต้นขนาด, ขั้นต่ำ, ค่าเริ่มต้นสูงสุด: 1 minidle: 3 maxactive ในมิลลิวินาที timebetweenevictionrunsmillis: 60000 # กำหนดเวลาขั้นต่ำเพื่อความอยู่รอดในสระว่ายน้ำ minevictableidletimeMillis: 30000 การตรวจสอบความถูกต้อง: เลือก 'x' testharille: testonborrow ที่แท้จริง 20 # กำหนดค่าตัวกรองสำหรับการตรวจสอบสถิติการสกัดกั้น หลังจากลบอินเทอร์เฟซการตรวจสอบ SQL อินเทอร์เฟซการตรวจสอบจะไม่สามารถนับได้ 'Wall' ใช้สำหรับตัวกรองไฟร์วอลล์: Stat, Wall, SLF4J # Open MergesQL ฟังก์ชั่นผ่านคุณสมบัติ ConnectProperties; SLOW SQL Record ConnectionProperties: druid.stat.mergesql = true; druid.stat.slowsqlmillis = 5000
กำหนดค่าฟังก์ชันการตรวจสอบและสถิติของ Druid
นำเข้า java.sql.sqlexception; นำเข้า javax.sql.datasource; นำเข้า org.slf4j.logger นำเข้า org.slf4j.loggerfactory นำเข้า org.springframework.boot.context.properties.configuration org.springframework.boot.web.servlet.filterregistrationbean นำเข้า org.springframework.boot.web.servlet.servletregistrationbean; นำเข้า org.springframework.context.annotation.bean; com.alibaba.druid.pool.druiddatasource; นำเข้า com.alibaba.druid.support.http.statviewservlet; นำเข้า com.alibaba.druid.support.http.webstatfilter; 2018*/@configurationPublic คลาส DRUIDCONFIGURATION {Private Static Final Logger สุดท้าย Logger = loggerFactory.getLogger (druidConfiguration.class); สตริงสุดท้ายคงที่ส่วนตัว db_prefix = "spring.datasource"; @bean สาธารณะ servletRegistrationBean druidservlet () {logger.info ("init druid servlet configuration"); ServletRegistrationBean ServletRegistrationBean = ใหม่ servletRegistrationBean (ใหม่ statViewServlet (), "/druid/*"); // IP Whitelist (ไม่อนุญาตให้มีการกำหนดค่าหรือว่างเปล่าการเข้าถึงทั้งหมด) ServletRegistrationBean.addinitParameter ("อนุญาต", ""); // IP Blacklist (Deny มีความสำคัญกว่าอนุญาตเมื่ออยู่ร่วมกัน) //servletRegistrationBean.addinitParameter("deny "," 192.168.1.100 "); // ผู้ใช้คอนโซลผู้ใช้ ServletRegistrationBean.addinitParameter ("loginusername", "admin"); ServletRegistrationBean.addinitParameter ("LoginPassword", "Admin"); // เป็นไปได้ไหมที่จะรีเซ็ตข้อมูลและปิดใช้งาน "รีเซ็ตในหน้า html ทั้งหมด" ฟังก์ชั่น servletregistrationbean.addinitparameter ("รีเซ็ตได้", "เท็จ"); ส่งคืน ServletRegistrationBean; } @Bean Public FilterRegistrationBean FilterRegistrationBean () {FilterRegistrationBean FilterRegistrationBean = FilterRegistrationBean ใหม่ (WebStatFilter ใหม่ ()); FilterRegistrationBean.addurlpatterns ("/*"); FilterRegistrationBean.addinitParameter ("การยกเว้น", "*.js,*. gif,*. jpg,*. png,*. css,*. ico,/druid/*"); Return FilterRegistrationBean; } @ConfigurationProperties (คำนำหน้า = db_prefix) คลาส idataSourceProperties {url สตริงส่วนตัว; ชื่อผู้ใช้สตริงส่วนตัว; รหัสผ่านสตริงส่วนตัว สตริงส่วนตัว DriverClassName; ค่าเริ่มต้น INT ส่วนตัว; minidle int ส่วนตัว; Maxactive ส่วนตัว Maxwait ส่วนตัว INT TimebetweenevictionRunsmillis ส่วนตัว; ส่วนตัว int minevictableidletimeMillis; QualidationQuery สตริงส่วนตัว; บูลีนส่วนตัวทดสอบในขณะที่; บูลีนส่วนตัว testonborrow; บูลีนส่วนตัว testonreturn; บูลีนส่วนตัว PoolpreparedStatements; MaxPoolpreparedStatementPerConnectionize ตัวกรองสตริงส่วนตัว การเชื่อมต่อสตริงส่วนตัว; @Bean DataSource DataSource () {dataSource DRUIDDATASOURCE = ใหม่ DRUIDDATASOURCE (); dataSource.seturl (URL); DataSource.SetUserName (ชื่อผู้ใช้); DataSource.SetPassword (รหัสผ่าน); DataSource.SetDriverClassName (DriverClassName); // dataSource.SetInitialSize (ค่าเริ่มต้น); DataSource.setMinidle (minidle); DataSource.SetMaxactive (maxactive); DataSource.setMaxWait (MaxWait); DataSource.SettimeBetweenevictionRunsmillis (TimebetweenevictionRunsmillis); DataSource.SetMineVictableIdletImeMillis (minevictableidletimeMillis); DataSource.SetValidationQuery (ValidationQuery); dataSource.settesthavyidle (testharhialidle); DataSource.SettestonBorrow (TestonBorrow); DataSource.SettestonReturn (TestOnReturn); DataSource.SetPoolPreparedStatements (PoolPreparedStatements); DataSource.SetMaxPoolPreparedStatementPerConnectionize (MaxPoolPreparedStatementPerConnectionize); ลอง {dataSource.setFilters (ตัวกรอง); } catch (sqlexception e) {system.err.println ("ตัวกรองการเริ่มต้นการกำหนดค่า DRUID:" + e); } dataSource.SetConnectionProperties (ConnectionProperties); ส่งคืนแหล่งข้อมูล; } สตริงสาธารณะ getUrl () {return url; } โมฆะสาธารณะ setUrl (rl String) {this.url = url; } สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; } สตริงสาธารณะ getDriverClassName () {return driverclassName; } โมฆะสาธารณะ setDriverClassName (String driverclassName) {this.driverClassName = DriverClassName; } public int getInitialSize () {return reiniSize; } โมฆะสาธารณะ setInitialSize (int fiarsize) {this.initialSize = ค่าเริ่มต้น; } สาธารณะ int getMinidle () {return minidle; } โมฆะสาธารณะ setMinidle (int minidle) {this.minidle = minidle; } public int getMaxactive () {return maxactive; } โมฆะสาธารณะ setMaxactive (int maxactive) {this.maxactive = maxactive; } สาธารณะ int getMaxWait () {return maxWait; } โมฆะสาธารณะ setMaxWait (int maxWait) {this.maxwait = maxWait; } public int getTimeBetweeneVictionRunsmillis () {ส่งคืน timebetweenevictionrunsmillis; } โมฆะสาธารณะ settimebetweenevictionrunsmillis (int timebetweenevictionrunsmillis) {this.timebetweenevictionrunsmillis = timebetweenevictionrunsmillis; } สาธารณะ int getMinevictableidletItimeLis () {return minevictableidletimeMillis; } โมฆะสาธารณะ setMinevictableidletItimeLis (int minevictableidletimeMillis) {this.minevictableidletEtimeLis = minevictableidletiTimeMillis; } สตริงสาธารณะ getValidationQuery () {return validationQuery; } โมฆะสาธารณะ setValidationQuery (String ValidationQuery) {this.validationQuery = ValidationQuery; } บูลีนสาธารณะ istesthimeidle () {return testharialidle; } โมฆะสาธารณะตั้งถิ่นฐานในขณะเดียวกัน (บูลีนทดสอบในขณะเดียวกัน) {this.testhialidle = testharhialidle; } บูลีนสาธารณะ istestonborrow () {return testonborrow; } โมฆะสาธารณะ Settestonborrow (Boolean Testonborrow) {this.testonborrow = testonborrow; } บูลีนสาธารณะ istestonReturn () {return testonReturn; } โมฆะสาธารณะ SettestonReturn (บูลีน testonreturn) {this.testonReturn = testonReturn; } บูลีนสาธารณะ iSpoolpreparedStatements () {return poolpreparedStatements; } โมฆะสาธารณะ setPoolPreparedStatements (บูลีน PoolPreparedStatements) {this.poolpreparedStatements = PoolPreparedStatements; } สาธารณะ int getMaxPoolPreparedStatementPerConnesionesize () {return maxPoolPreparedStatementPerConnesionesize; } โมฆะสาธารณะ setMaxPoolPreparedStatementPerConnesionesize (int maxpoolpreparedStatementPerConnesionesize) {this.maxPoolpreparedStatementPerConnectionize = MaxPoolPreparedStatementPerConnesionesize; } สตริงสาธารณะ getFilters () {ตัวกรองส่งคืน; } โมฆะสาธารณะ setFilters (ตัวกรองสตริง) {this.filters = ตัวกรอง; } สตริงสาธารณะ getConnectionProperties () {ส่งคืนการเชื่อมต่อ properties; } โมฆะสาธารณะ setConnectionProperties (String ConnectionProperties) {this.connectionProperties = การเชื่อมต่อ; -เริ่มแอปพลิเคชันที่อยู่การเข้าถึง: http: // localhost: 8080/druid/, ป้อนรหัสผ่านบัญชีที่กำหนดค่าและเข้าสู่ระบบและคุณสามารถดูแหล่งข้อมูลและสถิติ SQL และการตรวจสอบอื่น ๆ การเรนเดอร์มีดังนี้:
แน่นอนว่าอาลีบาบายังมีเวอร์ชันรวม Springboot ของ Druid (Druid-Spring-Boot-Starter) คุณสามารถอ้างถึงลิงก์ต่อไปนี้
อ้างถึง:
https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
https://github.com/alibaba/druid/wiki
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น