Vorwort
Ich habe die Artikel der Spring Boot Series schon lange nicht mehr aktualisiert. Glaubst du, du bist beschäftigt? Es ist auch möglich, dass der Schwerpunkt vor einiger Zeit auf anderen Aspekten liegt. Vor kurzem muss das Projekt ein Mini-Programm entwickeln, das nur Spring Boot verwendet, um einen Back-End-Dienst zu implementieren. Die relevanten Code-Fälle werden später geteilt, damit jeder bei Back-End-Diensten von Mini-Programmen nicht verwirrt wird.
Unter Spring Boot werden standardmäßig mehrere verfügbare Verbindungspools (DBCP, DBCP2, Tomcat, Hikari) bereitgestellt. Natürlich unterstützt Druid Druid nicht. Druid stammt aus einem Open -Source -Verbindungspool von Alibaba. Es bietet sehr hervorragende Überwachungsfunktionen. Lassen Sie mich mit Ihnen teilen, wie Sie sich in Spring Boot integrieren.
Versionsumgebung
Spring Boot 1.5.2.Release, Druid 1.1.6, JDK1.7
Systemintegration
Fügen Sie die Abhängigkeit von POM.xml hinzu:
<!-JPA-> <De vor Ort> <gruppe. <artifactId> mysql-connector-java </artifactId> </abhängig> <!-druid-> <depeopecy> <gruppe> com.alibaba </Groupid> <artifactId> druid </artifactid> <version> 1.1.6 </Version> </abhängig>
Konfigurieren Sie application.Properties:
#Data Quelle Spring.DataSource.url = JDBC: MySQL: //192.168.1.66: 3306/Spring_Boot? CharakterCoding = Utf-8 & USSSL = FALSPRING.DATaSource.username = Rootspring.da tasource.password = rootspring.datasource.driver-class-name = com.mysql.jdbc.driverspring.datasource.type = com.alibaba.druid.pool.druiddatasource# Initialisieren Sie Größe, minimaler, maximaler Spring. Spring.DataSource.TimeBetweenevictionRunsmillis = 60000# Konfigurieren Sie die Mindestzeit für eine Verbindung, um im Pool zu überleben, in Millisekunden Spring.DataSource.MineVictableIdletImemillis = 30000spring.Datenource 'x'Spring.dataSource.TestHockIdle = truespring.dataSource.testonborrow = falsspring.dataSource.TestonReturn = false# Open PSCache und geben die Größe von pScache an jeder Verbindung Spring.DataSource.poolpreparedStatements = TRESPRINGES.DATASOURCE.DATASOURCE.DATASOURCE.DATASOURCE.DATASOURCE.DATASOURCE.DATASOURCE. Konfigurieren Sie die Filter für die Überwachungsstatistik abgefangen. Nach dem Entfernen kann die Überwachungsschnittstelle SQL nicht gezählt werden. 'Wall' wird für Firewall Spring verwendet. Langsame SQL -Aufzeichnungen Spring.DataSource.ConnectionProperties = druid.stat.MergeNSQL = true; druid.stat.slowsqlmillis = 5000
Konfigurieren Sie die YML -Datei (wählen Sie eine der beiden oben genannten)
Frühling: DataSource: URL: JDBC: MySQL: //192.168.1.66: 3306/Spring-Boot? UseUnicode = True & CharakterCoding = Utf-8 & UsSessl = False Benutzername: Root-Passwort: Root-Treiberklassen-Name: com.mysql.jdbc.Driver-Plattform: MySQL-Typ: MySQL-Typ: com.alibaba.druid.pool.druiddataSource # Die folgende ist eine ergänzende Einstellung für den Verbindungspool, der auf alle Datenquellen über # initialisieren, minimal, maximal initialSize: 1 minidle: 3 MaxActive: 20 # Konfigurieren Sie die Zeit, um die Verbindung zu einem MAXWAIT zu erhalten. MAXWAIT. Millisekunden -ZeitbetweenevictionRunsmillis: 60000 # Konfigurieren Sie die minimale Zeit, um im Pool zu überleben, minevictableIdletImemillis: 30000 ValidationQuery: Wählen Sie 'x' test während der IDLE: TRUE testonborrows: false testonreturn: false # pscache öffnen und die Größe von pScache angeben. # Konfigurieren Sie die Filter für die Überwachung der Statistiken. Nachdem die Überwachungsschnittstelle SQL entfernt wurde, kann die Überwachungsschnittstelle nicht gezählt werden. 'Wall' wird für Firewall -Filter verwendet: STAT, Wand, SLF4J # Open Mergesql -Funktion über die Eigenschaft ConnectProperties; Langsame SQL -Datensatzverbindungsproperties: Druid.stat.Mergensql = true; druid.stat.slowsqlmillis = 5000
Konfigurieren Sie die Überwachungs- und Statistikfunktion von Druid
importieren java.sql.sqlexception; import javax.sql.datasource; import org.slf4j.logger; org.springframework.boot.web.servlet.filterregistrationBean; import org.springframework.boot.web.servlet.servletRegistrationBean; com.alibaba.druid.pool.druiddatasource; import 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); private statische endgültige Zeichenfolge db_prefix = "Spring.DataSource"; @Bean public servletRegistrationBean druidServlet () {logger.info ("Init Druid Servlet -Konfiguration"); ServletRegistrationBean ServletRegistrationBean = new ServletRegistrationBean (neuer StatViewServlet (), "/druid/*"); // IP Whitelist (keine Konfiguration oder leer, der gesamte Zugriff ist zulässig) servletregistrationBean.addinitParameter ("erlauben", ""); // IP BlackList (Deny hat Vorrang vor dem Koexistieren beim Koexistieren) //ServletRegistrationBean.addinitParameter("deny "," 192.168.1.100 "); // Konsolenverwaltung Benutzer ServletRegistrationBean.addinitParameter ("loginusername", "admin"); servletregistrationBean.addinitParameter ("loginPassword", "admin"); // ist es möglich, die Daten zurückzusetzen und das "Zurücksetzen auf der HTML -Seite" alle "Funktionen -Servletregistrierungsbeams.AddinitParameter (" zurückersetzbar "," False "); Return servletRegistrationBean; } @Bean public FilterregistrationBean FilterregistrationBean () {FilterregistrationBean FilterregistrationBean = new FilterregistrationBean (New WebStatFilter ()); filterregistrationBean.addurlpatterns ("/*"); filterregistrationBean.addinitParameter ("Ausschlüsse", "*.js,*. Gif,*. Jpg,*. Png,*. CSS,*. ICO,/Druid/*"); Rückgabefilterregistrierungsbean; } @ConfigurationProperties (prefix = db_prefix) class idataSourceProperties {private String url; privater String -Benutzername; privates Zeichenfolgenkennwort; private String -DriverClassName; private init initialSize; Privat int Minidle; privat int maxactive; Privat int Maxwait; private int timeBetweenevictionrunsmillis; private int minevictableIdletImemillis; private String -ValidationsQuery; privater boolescher Test, während privat boolean testonborrow; privater boolescher TestonReturn; private boolesche Poolproparedstatements; private int maxpoolPreparedStatementPerconectionSize; private Stringfilter; private String ConnectionProperties; @Bean public DataSource dataSource () {druidDataSource dataSource = new DruidDataSource (); DataSource.seturl (URL); DataSource.Setusername (Benutzername); DataSource.SetPassword (Passwort); DataSource.SetDriverClassName (TRAVERCLASSNAME); // configuration dataSource.setInitialSize (InitialSize); DataSource.SetMinidle (Minidle); DataSource.SetMaxActive (maxActive); DataSource.SetMaxwait (maxwait); DataSource.SettimeBetweenevictionRunsmillis (TimeBetweenevictionRunsmillis); DataSource.SetMineVictableIdletImemillis (minevictableIdletImemillis); DataSource.setValidationQuery (ValidationQuery); dataSource.settest -idle (test während der IDLE); DataSource.settestonborrow (testonborrow); DataSource.settestonReturn (testonReturn); DataSource.setPoolPreparedStatements (PoolpreparedStatements); DataSource.setMaxPoolProparedStatementPerConnectionSize (maxpoolPreparedStatementPerConnectionSize); try {dataSource.setFilters (Filter); } catch (SQLEXception e) {System.err.println ("Druid -Konfigurationsinitialisierungsfilter:" + e); } dataSource.setConnectionProperties (ConnectionProperties); DataSource zurückgeben; } public String geturl () {return url; } public void seturl (String url) {this.url = url; } public String getUnername () {return userername; } public void setUnername (String -Benutzername) {this.username = userername; } public String getPassword () {Kennwort zurückgeben; } public void setPassword (String -Passwort) {this.password = password; } public String getDriverClassName () {return triverClassName; } public void setDriverClassName (String -TreiberClassName) {this.DriverClassName = TRAVERCLASSNAME; } public int getInitialSize () {return initialSize; } public void setInitialSize (init initialSize) {this.initialSize = initialSize; } 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 getMineVictableIdletImemillis () {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 isestheIdle () {return test whileIdle; } public void Settodedle (boolean test whileIdle) {this.Testilidle = test theIdle; } public boolean isestonborrow () {return testonborrow; } public void Siedestonborrow (boolean testonborrow) {this.testonborrow = testonborrow; } public boolean isestonReturn () {return testonReturn; } public void settestonReturn (boolean testonReturn) {this.TestonReturn = testonReturn; } public boolean ispoolPreparedStatements () {return poolpreparedStatements; } public void setpoolProparedStatements (boolean PoolpreparedStatements) {this.poolPrepararedStatements = PoolpreparedStatements; } public int getmaxpoolPreparedStatementPerconectionSize () {return maxpoolpreparedStatementPerconctionSize; } public void setMaxpoolProparedStatementPerConnectionSize (int maxpoolProparedStatementPerConnectionSize) {this.maxpoolProparedStatementPerctionSizeSize = maxpoolPreparedStatementPercussize; } public String getFilters () {Rückgabefilter; } public void setFilters (String -Filter) {this.Filters = filter; } public String getConnectionProperties () {return ConnectionProperties; } public void setConnectionProperties (String ConnectionProperties) {this.connectionProperties = ConnectionProperties; }}}Starten Sie die Anwendung, Zugriffsadresse: http: // localhost: 8080/druid/, geben Sie das konfigurierte Kontokennwort ein und melden Sie sich an, und Sie können die Datenquelle und die SQL -Statistik und andere Überwachung anzeigen. Die Renderings sind wie folgt:
Natürlich bietet Alibaba auch Druids Springboot-integrierte Version (Druid-Spring-Boot-Starter) an, die Sie auf den folgenden Link verweisen können.
Siehe:
https://github.com/alibaba/druid/tree/master/druid-pring-boot-starter
https://github.com/alibaba/druid/wiki
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.