Kata pengantar
Saya sudah lama tidak memperbarui artikel seri Spring Boot. Apakah Anda pikir Anda sibuk? Mungkin juga bahwa fokus beberapa waktu lalu mungkin pada aspek lain. Baru-baru ini, proyek perlu mengembangkan program Mini, yang hanya menggunakan Spring Boot untuk mengimplementasikan layanan back-end. Kasus kode yang relevan akan dibagikan nanti sehingga semua orang tidak akan bingung saat melakukan layanan back-end program mini.
Di bawah Spring Boot, beberapa kumpulan koneksi yang tersedia (DBCP, DBCP2, Tomcat, Hikari) disediakan secara default. Tentu saja, Druid tidak mendukung Druid. Druid berasal dari kumpulan koneksi sumber terbuka Alibaba. Ini memberikan fungsi pemantauan yang sangat baik. Izinkan saya berbagi dengan Anda cara berintegrasi dengan boot musim semi.
Lingkungan Versi
Spring Boot 1.5.2.release, Druid 1.1.6, JDK1.7
Integrasi sistem
Tambahkan ketergantungan pom.xml:
<!-JPA-> <dependency> <GroupId> org.springframework.boot </proupId> <ArTifactId> Spring-boot-starter-data-jpa </artifactid> </dependency> <!-mysql-> <groupid> Mysql </groupid> <ArtifactId> mysql-connector-java </stifactid> </dependency> <!-druid-> <dependency> <groupid> com.alibaba </groupid> <ArTifactId> druid </artifactid> <version> 1.1.6 </version> </dependency>
Konfigurasikan application.properties:
Sumber #Data spring.datasource.url = jdbc: mysql: //192.168.1.66: 3306/spring_boot? karakterencoding = utf-8 & usessl = falsspring.datasource.username = rootspring.da tasource.password = rootspring.datasource.driver-class-name = com.mysql.jdbc.driverspring.datasource.type = com.alibaba.druid.pool.druiddataSource# Inisialisasi ukuran, minimum, maksimum spring.dataSource.initialsize = 1spring.datasource.minidle = 3spring.dataSource.maxactive = 20# Konfigurasikan waktu untuk mendapatkan waktu tunggu yang diperlukan untuk deteksi. spring.datasource.TimeBetweenevictionRunsmillis = 60000# Konfigurasikan waktu minimum untuk koneksi untuk bertahan di kolam renang, dalam milidonds spring.datasource.MinevictableIdleTimemillis = 30000Spring.datasource.validationQuery = 'x'spring.datasource.testwhileIdle = truespring.datasource.testonborrow = falspring.dataSource.testonreturn = false# buka pscache dan tentukan ukuran pscache pada setiap koneksi spring.dataSource.poolpredStatements = truespringpredspring.datacpredpredspredspring.datacpredpredspring.datparping Konfigurasikan filter untuk memantau statistik dicegat. Setelah menghapusnya, antarmuka pemantauan SQL tidak dapat dihitung. 'Wall' digunakan untuk firewall spring.datasource.filters = stat, wall, slf4j# terbuka fungsi mergesql melalui properti connectproperties; Slow SQL Records spring.datasource.connectionProperties = druid.stat.mergesql = true; druid.stat.slowsqlmillis = 5000
Konfigurasikan file YML (pilih salah satu dari dua di atas)
Spring: DataSource: URL: JDBC: mysql: //192.168.1.66: 3306/spring-boot? UseUnicode = true & characterencoding = UTF-8 & USESSL = FALSE USERNAME: ROOT KERJA: Driver root-Class-name: com.mysql.jdbc.driver Platform: root driver-class-name: com.mysql.jdbc.driver: Platform: com.alibaba.druid.pool.druidDataSource # Berikut ini adalah pengaturan tambahan untuk kumpulan koneksi, yang diterapkan pada semua sumber data di atas # inisialisasi ukuran, minimum, inisial maksimum: 1 minidle: 3 Maxactive: 20 Konfigurasi waktu untuk mendapatkan waktu tunggu koneksi MAXWAIT: 60000 # Konfigurasi How Long It Long millisecond timeBetweenEvictionRunsMillis: 60000 # Configure the minimum time to survive in the pool minEvictableIdleTimeMillis: 30000 validationQuery: select 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false # Open PSCache and specify the size of PSCache on each connection pool poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 # Mengkonfigurasi filter untuk pemantauan statistik mencegat. Setelah menghapus antarmuka pemantauan SQL, antarmuka pemantauan tidak dapat dihitung. 'Wall' digunakan untuk filter firewall: stat, wall, slf4j # terbuka fungsi mergesql melalui properti ConnectProperties; Slow SQL Record ConnectionProperties: druid.stat.mergesql = true; druid.stat.slowsqlmillis = 5000
Konfigurasikan fungsi pemantauan dan statistik Druid
impor java.sql.sqlexception; impor javax.sql.datasource; impor org.slf4j.logger; impor org.slf4j.loggerFactory; impor org.springframework.boot.context.properties.configurationprigures; org.springframework.boot.web.servlet.filterregistrationBean; impor org.springframework.boot.web.servlet.servletregistrationBean; impor org.spramework.context.annotation.bean; impor org.springfrramework.context.notation com.alibaba.druid.pool.druidDataSource; impor com.alibaba.druid.support.http.statviewservlet; import com.alibaba.druid.support.http.webstatfilter; 2018*/@ConfigurationPublic Class DRUIDConfiguration {private static final Logger Logger = loggerFactory.getLogger (druidconfiguration.class); string final statis pribadi db_prefix = "spring.datasource"; @Bean Public ServletRistrationBean DruidServlet () {Logger.info ("Init Druid Servlet Configuration"); ServletregistrationBean servletregistrationBean = servletregistrationBean baru (statviewServlet baru (), "/druid/*"); // IP WhiteList (tidak ada konfigurasi atau kosong, semua akses diizinkan) servletregistrationBean.addinitparameter ("izinkan", ""); // ip blacklist (DENY lebih diutamakan diizinkan saat hidup berdampingan) //servletregistrationBean.addinitparameter("Deny "," 192.168.1.100 "); // manajemen konsol pengguna servletregistrationbean.addinitparameter ("loginusername", "admin"); servletregistrationBean.addinitparameter ("LoginPassword", "Admin"); // Apakah mungkin untuk mengatur ulang data dan menonaktifkan "Reset pada halaman html semua" function servletregistrationBean.addinitparameter ("resetenable", "false"); return servletregistrationBean; } @Bean Public FilterRistrationBean FilterRegistrationBean () {filterRegistrationBean filterRegistrationBean = new filterregistrationBean (WebStatFilter baru ()); filterregistrationBean.addurlpatterns ("/*"); filterregistrationBean.addinitparameter ("pengecualian", "*.js,*. gif,*. jpg,*. png,*. css,*. ico,/druid/*"); return filterregistrationBean; } @ConfigurationProperties (prefix = db_prefix) kelas idataSourceProperties {private string url; nama pengguna string pribadi; kata sandi string pribadi; Private String DriverClassName; Ukuran inisial int pribadi; minidle int pribadi; private int maxactive; private int maxwait; private int timeweTeVictionrunsmillis; private int minevictableidleTimemillis; ValidationQuery string pribadi; Testwhileidle boolean pribadi; Private Boolean Testonborrow; TestonReturn boolean pribadi; Private Boolean PoolPreparedStatements; Private int maxpoolPreparedStatementPerConnectionSize; filter string pribadi; Private String ConnectionProperties; @Bean Public DataSource DataSource () {druidDataSource dataSource = new druidDataSource (); DataSource.setUrl (URL); DataSource.SetUserName (nama pengguna); DataSource.setPassword (kata sandi); DataSource.SetDriverClassName (DriverClassName); // konfigurasi dataSource.setInitialSize (inisialisasi); DataSource.SetMinidle (Minidle); DataSource.SetMaxActive (MaxActive); DataSource.SetMaxwait (MaxWait); DataSource.SettimeBetweeneVictionRunsmillis (Timebetweenevictionrunsmillis); DataSource.setMinEvictableIdletimemillis (MinEvictableIdletimeMillis); DataSource.SetValidationQuery (ValidationQuery); DataSource.settestwhileIdle (testwhileidle); DataSource.settestonborrow (testonborrow); DataSource.settestonreturn (testonreturn); DataSource.SetPoolPreparedStatements (PoolPreparedStatements); DataSource.SetMaxPoolPreparedStatementPerConnectionSize (MaxPoolPreparedStatePerConnectionSize); coba {DataSource.SetFilters (filter); } catch (sqlexception e) {system.err.println ("Filter inisialisasi konfigurasi druid:" + e); } DataSource.SetConnectionProperties (ConnectionProperties); Return DataSource; } public String getUrl () {return url; } public void setUrl (string url) {this.url = url; } public string getUserName () {return username; } public void setusername (string username) {this.username = username; } public string getPassword () {return kata sandi; } public void setPassword (kata sandi string) {this.password = kata sandi; } public String getDriverClassName () {return driverClassName; } public void setDriverClassName (String DriverClassName) {this.DriverClassName = driverClassName; } public int getInitialSize () {return initialsize; } public void setInitialSize (int inisizi) {this.initialsize = inisialisasi; } public int getminidle () {return minidle; } public void setminidle (int minidle) {this.minidle = minidle; } public int getmaxactive () {return maxactive; } public void setmaxActive (int maxactive) {this.maxactive = maxactive; } public int getmaxwait () {return maxwait; } public void setmaxwait (int maxwait) {this.maxwait = maxwait; } public int getTimeBetweenevictionRunsmillis () {return timebetweenevictionrunsmillis; } public void setTimeBetweenEvictionRunsmillis (int timebetweenevictionrunsmillis) {this.TimeBetweeneVictionRunsmillis = timebetweenevictionrunsmillis; } public int getMineVictableIdeLeTimeMillis () {return MinEvictableIdletimeMillis; } public void setminevictableIdleTimemillis (int minevictableidleTimeMillis) {this.minevictableIdleTimemillis = minevictableidleTimemillis; } public String getValidationQuery () {return validationQuery; } public void setValidationQuery (String ValidationQuery) {this.validationQuery = ValidationQuery; } public boolean iStestwhileIdle () {return testwhileIdle; } public void settestwhileIdle (boolean testwhileIdle) {this.testwhileIdle = testwhileIdle; } public boolean iStestonborrow () {return testonborrow; } public void SettestonBorrow (Boolean testonborrow) {this.testonborrow = testonborrow; } public boolean iStestonreturn () {return testonreturn; } public void SettestonReturn (Boolean testonreturn) {this.testonreturn = testonreturn; } public boolean isPoolPreparedStateMents () {return poolpreparedStateSements; } public void setPoolPreparedStatements (Boolean PoolPreparedStatements) {this.poolPreparedStatements = PoolPreparedStatements; } public int getMaxPoolPreparedStateMentPerConnectionSize () {return maxPoolPreparedStatePerPonnectionSize; } public void setmaxPoolPreparedStateMentPerConnectionSize (int maxPoolPreparedStatePerConnectionSize) {this.MaxPoolPreparedStatePerConnectionSize = maxPoolPreparedStateMentPonNectionSize; } public string getFilters () {return filter; } public void setFilters (string filter) {this.filters = filter; } public String getConnectionProperties () {return ConnectionProperties; } public void setConnectionProperties (String ConnectionProperties) {this.connectionProperties = ConnectionProperties; }}}Mulai aplikasi, alamat akses: http: // localhost: 8080/druid/, masukkan kata sandi akun dan login yang dikonfigurasi, dan Anda dapat melihat sumber data dan statistik SQL dan pemantauan lainnya. Rendering adalah sebagai berikut:
Tentu saja, Alibaba juga menyediakan Versi Terpadu Springboot Druid (Druid-Spring-Boot-Starter), Anda dapat merujuk ke tautan berikut.
Lihat:
https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
https://github.com/alibaba/druid/wiki
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.