Druid adalah kumpulan koneksi basis data open source dari Alibaba, yang menyediakan fungsi pemantauan yang sangat baik untuk operasi basis data. Artikel ini akan menjelaskan cara mengintegrasikan Druid ke dalam proyek Springboot.
Artikel ini dikembangkan di bawah proyek berbasis JPA. Pertama, dependensi Druid tambahan ditambahkan ke file POM. File POM adalah sebagai berikut:
<? Xml Version = "1.0" encoding = "UTF-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <ModelVersion> 4.0.0 </ModelVersion> <groupid> com.dalaoy <ArTifactId> springboot_druid </stifactid> <version> 0.0.1-snapshot </version> <packaging> Jar </packaging> <name> springboot_druid </name> <criprippring> springboot_druid </creckripe> <parent> <groupid> org.springframework.oot. <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.12.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <Project.Reporting.OutputEncoding> UTF-8 </project.reporting.outputEncoding> <Java.Version> 1.8 </java.version> </properties> </ArtifAcid> <ArtActid> org.springframework.boot </groupid> <ArtifacTid> </Dependency> <dependency> <GroupId> org.springframework.boot </groupid> <ArtiFacTid> Spring-boot-starter-web </t Artifactid> </dependency> <tendentid> <sruptid> SCOPOP.MOPOP.MOTIP.BOTIC </groupid> <ArtiFacTID> <crupt-doot-boot-dbr </Dependency> <dependency> <GroupId> mysql </sroupid> <ArTifactId> mysql-connector-java </arttifactid> <scope> runtime </seupope> </gandendency> <Artifactid> <cruptid> SpringFramework.boot </groupid> <Artifactid> <cruptid> <crotif-startif-t-t-t-t/-t-t-t/groupid> <ArtifacTid> <scope> tes </seupope> </dependency> <dependency> <groupId> com.alibaba </proupid> <t Artifactid> druid </artifactid> <version> 1.0.28 </version> </dependency> </Dependencies> <build> <groupIns> <groupid> org.springfring.boot.boot.boot. <ArTifactId> spring-boot-maven-plugin </artifactid> </lugin> </lugin> </build> </poject>
Paruh pertama aplikasi. Properti dan JPA terintegrasi tidak berubah sama sekali. Beberapa konfigurasi Druid telah ditambahkan di bawah ini. Jika Anda tidak memahami konfigurasi Druid, Anda dapat memeriksanya secara online. (Saya pikir artikel ini ditulis dengan baik, portal)
#Port Number Server.port = 8888 ## Validasi Saat Hibernate dimuat, verifikasi pembuatan struktur tabel basis data ## Buat setiap kali hibernate dimuat, buat ulang struktur tabel basis data, yang merupakan alasan hilangnya data tabel database. ## Create-drop Dibuat Saat Hibernate dimuat, keluar adalah untuk menghapus struktur tabel ## Perbarui pemuatan hibernate secara otomatis memperbarui struktur basis data ## Validasi memverifikasi struktur tabel saat memulai, dan tidak akan membuat tabel ## tidak ada yang tidak melakukan apa pun saat memulai spring.jpa.hibernate.ddl-auto = create ## cetakan = console cetakan. configuration##Database address spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false##Database username spring.datasource.usernam e=root##Database password spring.datasource.password=root##Database driver spring.datasource.driver-class-name = com.mysql.jdbc.driver# Berikut ini berbeda# Jika Anda menggunakan druid, Anda perlu mengkonfigurasi satu lagi properti spring.datasource.typespring.datasource.type = com.alibaba.druid.pool.druiddatacize.policer# mimum #alibaba spring.datasource.initialsize = 5 spring.datasource.minidle = 5 spring.datasource.maxactive = 20 # Konfigurasikan waktu untuk mendapatkan batas waktu tunggu pegas.dataSource.maxwait = 60000 # Konfigurasi berapa lama yang dibutuhkan untuk melakukan interval deteksi untuk mendeteksi hal -hal yang diperlukan untuk membutuhkan baik -baik yang diperlukan. Spring.Datasource.TimeBetweenEvictionRunsmillis = 60000 # Mengkonfigurasi waktu minimum untuk koneksi untuk bertahan di kolam, unit adalah milidonds spring.datasource.MinevictableDeTimemillis = 300000 spring.dataSource.validationQuery = Select 1 dari dual spring.dataSource.validationQuery = 1 dari dual spring. spring.datasource.testonborrow = false spring.datasource.testonreturn = false # buka pscache dan tentukan ukuran pscache pada setiap koneksi spring.datasource.poolpreparedStatements = configure for configure. Setelah menghapusnya, antarmuka pemantauan SQL tidak dapat dihitung. 'Wall' digunakan untuk firewall spring.datasource.filters = stat, wall, log4j# Gunakan properti ConnectProperties untuk membuka fungsi MergesQL; Slow SQL Records
Kemudian tambahkan druidconfig ke proyek dan jelaskan secara singkat bahwa file konfigurasi ini terutama memuat konfigurasi application.properties, dan kodenya adalah sebagai berikut:
Paket com.dalaoyang.config; impor java.sql.sqlexception; import javax.sql.dataSource; impor org.apache.log4j.logger; impor org.springframework.beans.facexty.notation.value; impor org.spramework.beans.facextore.notation.value; impor org.spramework.beans.facxtory.notation.value; Impor org.spramework.beans.facexty org.springframework.context.annotation.configuration; impor org.springframework.context.annotation.primary; impor com.alibaba.druid.pool.druiddataSource;/** * @Author dalaoyang * @description * @project; @email [email protected] * @date 2018/4/12 */ @configurationpublic kelas publik druidconfig {private logger logger = logger.getLogger (this.getClass ()); @Value ("$ {spring.datasource.url}") Private String dBURL; @Value ("$ {spring.datasource.username}") Private String username; @Value ("$ {spring.datasource.password}") kata sandi string pribadi; @Value ("$ {spring.datasource.driver-class-name}") Private String DriverClassName; @Value ("$ {spring.datasource.initialsize}") Private int Inisizasi; @Value ("$ {spring.datasource.minidle}") private int minidle; @Value ("$ {spring.datasource.maxactive}") private int maxactive; @Value ("$ {spring.datasource.maxwait}") private int maxwait; @Value ("$ {spring.datasource.TimeBetweenEvictionRunsmillis}") private int timeTeFareVictionRunsmillis; @Value ("$ {spring.datasource.minevictableIdletimeMillis}") private int minevictableIdletimemillis; @Value ("$ {spring.datasource.ValidationQuery}") Private String ValidationQuery; @Value ("$ {spring.datasource.testwhileidle}") private boolean testwhileidle; @Value ("$ {spring.datasource.testonborrow}") private boolean testonborrow; @Value ("$ {spring.datasource.testonreturn}") private boolean testonreturn; @Value ("$ {spring.datasource.poolpreparedstatements}") private boolean poolpreparedStatements; @Value ("$ {spring.datasource.maxpoolPreparedStatePerConnectionSize}") private int maxPoolPreparedStatePerConnectionSize; @Value ("$ {spring.datasource.filters}") filter string pribadi; @Value ("{Spring.Datasource.ConnectionProperties}") Private String ConnectionProperties; @Bean @primary // sumber data utama DataSource public DataSource () {druidDataSource dataSource = new druidDataSource (); DataSource.setUrl (this.dburl); 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) {logger.error ("pengecualian konfigurasi druid", e); } DataSource.SetConnectionProperties (ConnectionProperties); Return DataSource; }}
Kemudian buat druidfilter, kodenya adalah sebagai berikut:
Paket com.dalaoyang.filter; import javax.servlet.annotation.webfilter; import javax.servlet.annotation.webinitparam; import com.alibaba.druid.support.http.webstatfilter;/** * @author dALAOyang * DALAOILAGED *DESTATFILTER;/** * @Author DALAOYANG * DALAOYAN @DHOOPFILTER;/** * @Author DALAOYANG com.dalaoyang.filter * @email [email protected] * @date 2018/4/12 */ @webfilter (filtername = "druidwebstatfilter", urlpatterns = "/ *", initparams = { @WebInitParam (name = "Exclussions", value = "*. Js,*. Gif,*. Jpg,*. Bmp,*.
Buat DruidServlet baru, tambahkan anotasi ke kelas @WebServlet, yang mengonfigurasi kata sandi akun untuk login ke halaman pemantauan Druid, daftar putih dan konfigurasi daftar hitam, kode ini sebagai berikut:
Paket com.dalaoyang.servlet; import javax.servlet.annotation.webinitparam; import javax.servlet.annotation.webservlet; import com.alibaba.druid.support.http.statviewservlet;/** * @author DalAoyang * dalaoyang * dalaoyang * dalaoyang * dalaoyang * dalaoyang * dalaoyang * dalaoyang * dalaoyang * dalaoyang * dalaoyang * dalaoyang * dalaoyang com.dalaoyang.servlet * @email [email protected] * @date 2018/4/12 */@WebServlet(urlPatterns="/druid/*", initParams={ @WebInitParam(name="allow",value=""),// IP whitelist (no configuration or empty, all access is allowed) @WebInitParam(name="deny",value=""),// IP blacklist (deny takes precedence over allow) @WebInitParam(name="loginUsername",value="admin"),// Log in to the druid management page username@WebInitParam(name="loginPassword",value="admin")// Log in to the druid management page password}) public class DruidServlet memperluas StatViewSerVlet {}
Kemudian tambahkan anotasi @SerVletComponentScan ke kelas startup dan biarkan proyek memindai ke servlet. Kodenya adalah sebagai berikut:
Paket com.dalaoyang; impor org.springframework.boot.springapplication; impor org.springframework.boot.autoconfigure.springbootApplication; impor org.springframework.boOt/ steingplication.servlet.servletConents; Anotasi, jika tidak, itu tidak dapat dipindai untuk servlet@servletComponentscan kelas publik springbootdruidapplication {public static void main (string [] args) {springapplication.run (springbootdruidapplication.class, args); }}Sisanya adalah entitas yang sama (kelas entitas), repositori (lapisan operasi data), pengontrol (pengontrol yang digunakan untuk pengujian) sebagai JPA terintegrasi, yang secara langsung menampilkan kode.
Kota
Paket com.dalaoyang.entity; import javax.persistence. *;/** * @author dalaoyang * @description * @project springboot_learn * @package com.dalaoyang.entity * @email [email protected] * @dalaoyang @email [email protected] * @date 2018/4/4/4/4/4 @" @" @GeneratedValue (Strategy = GenerationType.Auto) Private Int CityID; Private String CityName; Private String CityTroduce; Public City (Int CityID, String CityName, String CityIntroduce) {this.cityId = CityId; this.cityname = CityName; this.cityTroduce = CityTroduce; } Public City (String CityName, String CityIntroduce) {this.cityname = CityName; this.cityTroduce = CityTroduce; } public city () {} public int getCityId () {return cityId; } public void setCityId (int cityId) {this.cityid = cityId; } public String getCityName () {return CityName; } public void setCityName (String CityName) {this.cityname = CityName; } public string getCityIntroduce () {return cityIntroduce; } public void setCityIntroduce (String CityIntroduce) {this.cityIntroduce = CityIntroduce; }}
CityRepository
Paket com.dalaoyang.repository; import com.dalaoyang.entity.city; impor org.springframework.data.jpa.repository.jparepository;/** * @Author Dalaoyang * @description * @project springboot_learn * @package * @description * @proTboleT_learn * @package [email protected] * @Date 2018/4/7 */Antarmuka Publik CityRepository memperluas jParepository <City, Integer> {}
CityController
Paket com.dalaoyang.controller; import com.dalaoyang.entity.city; import com.dalaoyang.repository.cityrepository; impor org.springframework.beans.notoration.Autowired; impor org.springframework.wind.annotation.Autowired; Impor org.springframework.wind.annotasi org.springframework.web.bind.annotation.RestController;/** * @author dalaoyang * @description * @project springboot_learn * @package com.dalaoyang.controller * @email [email protected] * @dalaclate 2018/ @email [email protected] * @dalaclate 2018/ @eMail 397600 {@Autowired Private CityRepository CityRepository; // http: // localhost: 8888/savecity? CityName = Beijing & CityIntroduce = ibukota China @getMapping (value = "Savecity") Public String Savecity (String CityName, String CityTroduce) {City City = New City (CityName, CityIntroduce); CityRepository.Save (City); mengembalikan "kesuksesan"; } // http: // localhost: 8888/deletecity? cityid = 2 @getMapping (value = "deletecity") public string deletecity (int cityid) {cityrepository.delete (cityId); mengembalikan "kesuksesan"; } //http://localhost:8888/updateCity?cityId=3&cityName=Shenyang&cityIntroduce=Liaoning Provincial Capital @GetMapping(value = "updateCity") public String updateCity(int cityId,String cityName,String cityIntroduce){ City city = new City(cityId,cityName,cityIntroduce); CityRepository.Save (City); mengembalikan "kesuksesan"; } // http: // localhost: 8888/getCityById? cityid = 3 @getMapping (value = "getCityById") getCityById City GetCityD (int CityID) {City City = CityRepository.findOne (CityID); Kota kembali; }}
Kemudian mulailah proyek dan Anda dapat melihat bahwa konsol telah membuat tabel kota.
Kemudian kunjungi http: // localhost: 8888/druid dan Anda dapat melihat gambar berikut:
Masukkan admin kata sandi akun, admin, seperti yang ditunjukkan pada gambar berikut
Kemudian saat ini kita dapat mengunjungi http: // localhost: 8888/savecity? CityName = Beijing & CityIntroduce = Ibukota China
Kemudian klik pada pemantauan SQL di atas, seperti yang ditunjukkan pada gambar di bawah ini.
Dari gambar di atas, Anda dapat melihat bahwa SQL yang memulai tabel pembuatan proyek baru saja dieksekusi. Integrasi telah selesai di sini.
Unduh Kode Sumber: https://gitee.com/dalaoyang/springboot_learn
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.