Préface
Je n'ai pas mis à jour les articles de Spring Boot Series depuis longtemps. Pensez-vous que vous êtes occupé? Il est également possible que l'objectif d'il y a quelque temps puisse être sur d'autres aspects. Récemment, le projet doit développer un mini-programme, qui utilise simplement Spring Boot pour implémenter un service back-end. Les cas de code pertinents seront partagés ultérieurement afin que tout le monde ne soit pas confus lorsqu'ils effectuent des services back-end de mini programme.
Sous Spring Boot, plusieurs pools de connexion disponibles (DBCP, DBCP2, Tomcat, Hikari) sont fournis par défaut. Bien sûr, Druid ne prend pas en charge Druid. Druid provient d'un pool de connexion open source d'alibaba. Il offre de très excellentes fonctions de surveillance. Permettez-moi de partager avec vous comment s'intégrer à Spring Boot.
Environnement de version
Spring Boot 1.5.2.release, Druid 1.1.6, JDK1.7
Intégration du système
Ajouter une dépendance pom.xml:
<! - JPA -> <dependency> <proupId> org.springframework.boot </proupId> <Artifactid> printemps-boot-starter-data-jpa </ artifactid> </pedigency> <! - mysql -> <dependency> <proupId> MySQL </proupId> <ArtefactId> MySQL-Connector-Java </Retifactid> </Dependency> <! - Druid -> <Dependency> <ProupID> com.alibaba </romproudId> <Artefactid> Druid </etefactive> <version> 1.1.6 </-version> </dependency>
Configurer l'application.properties:
Source #data printemps.datasource.url = jdbc: mysql: //192.168.1.66: 3306 / printemps_boot? CharacterEncoding = 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 # Initialize size, minimum, maximum spring.datasource.initialSize=1spring.datasource.minIdle=3spring.datasource.maxActive=20# Configure the time to get the connection waiting timeout spring.datasource.maxWait=60000# Configure how long it takes to detect once, detect the idle connection that needs to be closed, in milliseconds printemps.datasource.TimeBetweenEvictionRunsmillis = 60000 # Configurez le temps minimum pour une connexion pour survivre dans la piscine, en millisecondes Spring.Datasource.MinevictableIdleMemillis = 30000SPRING.DATASOURCE.VALIDEDERDERY = SELECT = 'x'spring.datasource.test WhiteIdle = truspring.datasource.testonborrow = falspring.datasource.testonreturn = false # ouvrir pscache et spécifier la taille de Pscache sur chaque connexion printemps.datasource.poolPreparedStatements = truspring.datasource.maxpoolPreparedStatementPerConnectionsize = 20 # Configure des filtres pour surveiller les statistiques interceptées. Après l'avoir retiré, l'interface de surveillance SQL ne peut pas être comptée. 'wall' est utilisé pour le pare-feu Spring.datasource.filters = stat, wall, slf4j # # function mergesql via la propriété ConnectProperties; Slow SQL Records Spring.DataSource.ConnectionProperties = Druid.stat.Mergesql = TRUE; Druid.stat.slowsqlmillis = 5000
Configurer le fichier yml (choisissez l'un des deux ci-dessus)
Spring: DataSource: URL: jdbc: mysql: //192.168.1.66: 3306 / printemps-boot? useunicode = true & caractéristique = utf-8 & usessl = false username: Root Motword: root Driver-Class-name: com.mysql.jdbc.Diver Platform: Mysql Type: com.alibaba.druid.pol En milliseconde TimebetweenEvictionRunsmillis: 60000 # Configurez le temps minimum pour survivre dans le pool MineVictableIdleMemillis: 30000 ValidationQuery: Sélectionnez 'X' Tester WhideIdle: True TestOnBorrow: Faux Testonreturn: FAUX # Open PSCCACH et spécifie la taille de PSCACHE sur chaque connexion PoolPrepredStAtStStAts: MaxpoolPreparedStatementPerConnectionize: 20 # Configurez les filtres pour la surveillance des statistiques interceptant. Après avoir retiré l'interface de surveillance SQL, l'interface de surveillance ne peut pas être comptée. «Wall» est utilisé pour les filtres à pare-feu: stat, mur, slf4j # Open Mergesql Fonction via la propriété ConnectProperties; Connexion SQL RECORD SQL: druid.stat.Mergesql = true; druid.stat.slowsqlmilis = 5000
Configurer la fonction de surveillance et de statistiques de Druid
Importer java.sql.sqlexception; import javax.sql.datasource; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.boot.context.properties.configurationproperties; import; org.springframework.boot.web.servlet.filterRegistrationBean; import org.springframework.boot.web.servlet.servletRegistrationBean; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; importation; import com.alibaba.druid.pool.druiddatasource; import com.alibaba.druid.support.http.statViewServlet; Importer com.alibaba.druid.support.http.webstatfilter; / ** * CRÉATION ALIBABA CONNEXATION PALOPE DRUID DUID 2018 * / @ ConfigurationPublic classe DruidConfiguration {private static final logger = loggerfactory.getLogger (druidConfiguration.class); chaîne finale statique privée db_prefix = "printemps.datasource"; @Bean Public ServLetRegistrationBean DruidServlet () {Logger.info ("Init Druid Servlet Configuration"); ServletRegistrationBean ServLetRegistrationBean = new ServletRegistrationBean (new StatViewServlet (), "/ Druid / *"); // la liste blanche IP (pas de configuration ou vide, tout l'accès est autorisé) ServletRegistrationBean.AddinitParameter ("Autoriser", ""); // IP Blacklist (Deny a priorité sur Autoriser en coexistant) //ServletRegistrationBean.AddinitAmètre("DENY "," 192.168.1.100 "); // Console Management User ServletRegistrationBean.AddInitParameter ("LoginUserName", "Admin"); ServletRegistrationBean.AddInitParameter ("LoginPassword", "Admin"); // est-il possible de réinitialiser les données et de désactiver la "réinitialisation sur la page HTML Tous" Fonction ServLetRegistrationBean.AddinitAramètre ("réintéressable", "false"); Return ServletRegistrationBean; } @Bean Public FilterRegistrationBean FilterRegistrationBean () {FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean (new WebStatFilter ()); FilterRegistrationBean.AddurlPatterns ("/ *"); FilterRegistrationBean.AddInitParameter ("exclusions", "* .js, *. gif, *. Jpg, *. Png, *. CSS, *. ICO, / Druid / *"); Return FilterRegistrationBean; } @Configurationproperties (prefix = db_prefix) class idataSourceProperties {private string url; Nom d'utilisateur de chaîne privée; mot de passe de chaîne privé; String Private DriverClassName; private int initialSize; Int privé Minidle; Int privé maxactif; privé int maxwait; private int timebetweenvictionrunsmillis; privé int minevictableidletimemillis; STRING PRIME ValidationQuery; Test de booléen privé WhileIdle; TestonBrow booléen privé; Testonreturn booléen privé; Boolean PoolPreparedstatements privés; private int maxpoolPreparedStatementPerConnectionize; filtres à chaîne privées; Private String ConnectionProperties; @Bean public dataSource dataSource () {druidDataSource dataSource = new DruidDataSource (); DataSource.setUrl (URL); DataSource.SetUsername (nom d'utilisateur); DataSource.SetPassword (mot de passe); DataSource.setDriverClassName (DriverClassName); // Configuration DataSource.SetInitialSize (initialSize); DataSource.setMinIdle (minidle); dataSource.setMaxActive (maxactive); DataSource.setMaxWait (Maxwait); dataSource.setTimeBetweenvictionRunsmillis (TimeBetweenEvictionRunsMillis); DataSource.setMinevictableIdleMemillis (MineVictableIdleMemillis); DataSource.SetValidationQuery (validationQuery); DataSource.SetTest WhileIdle (Test WhenIdle); DataSource.setTestonBorrow (TestOnBorrow); DataSource.setTestonreturn (testonreturn); DataSource.SetPoolPreparedStatements (PoolPreparedStatements); DataSource.SetMaxPoolPreparedStatementPerConnectionsize (MaxPoolPreparedStatementPerConnectionsize); essayez {dataSource.setFilters (filtres); } catch (sqlexception e) {System.err.println ("Filtre d'initialisation de configuration 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 mot de passe; } public void setPassword (String Motword) {this.password = mot de passe; } public String getDriverClassName () {return DriverClassName; } public void setDriverClassName (String DriverClassName) {this.driverClassName = DriverClassName; } public int getInitialSize () {return initialSize; } public void SetInitialSize (int 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 gettimebetweenvictionrunsmillis () {return timebetweenEvictionRunsmillis; } public void settimebetweenvictionrunsmillis (int timebetweenvictionrunsmillis) {this.timebetweenvictionrunsmillis = timebetweenvictionrunsmillis; } public int getMineVictableIdleMemillis () {return minevictableIdleMemillis; } public void setMineVictableIdleMemillis (int minevictableidletimemillis) {this.minevictableidlememillis = minevictableidlememillis; } public String getValidationQuery () {return validationQuery; } public void setValidationQuery (String ValidationQuery) {this.validationQuery = ValidationQuery; } public boolean isTest WhileIdle () {return Test Whendle; } public void Settest WhileIdle (Boolean Test WhileIdle) {this.test WhileIdle = Test WhileIdle; } 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 ispoolPreparedStAtsations () {return PoolPreparedStatements; } public void SetPoolPreparedStatements (boolean poolPreparedStatements) {this.poolPreparedStatements = PoolPreparedStatements; } public int getMaxPoolPreparedStatementPerConnectionsize () {return maxpoolPreparedStatementPerConnectionsize; } public void setMaxPoolPreparedStatementPerConnectionsize (int maxpoolPreparedStatementPerConnectionsize) {this.maxpoolPreparedStatementPerConnectionsize = maxpoolPreparedStatementPerConnectionSize; } public String getFilters () {return filtres; } public void setFilters (filtres de chaîne) {this.filters = filters; } public String getConnectionProperties () {return ConnectionProperties; } public void setConnectionProperties (String ConnectionProperties) {this.connectionProperties = ConnectionProperties; }}}Démarrez l'application, adresse d'accès: http: // localhost: 8080 / druid /, entrez le mot de passe du compte configuré et connectez-vous, et vous pouvez afficher la source de données et les statistiques SQL et d'autres surveillance. Les rendus sont les suivants:
Bien sûr, Alibaba fournit également la version intégrée de Springboot de Druid (Druid-Spring-Boot-Starter), vous pouvez vous référer au lien suivant.
se référer à:
https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
https://github.com/alibaba/druid/wiki
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.