Prefacio
No he actualizado los artículos de la serie Spring Boot durante mucho tiempo. ¿Crees que estás ocupado? También es posible que el enfoque de hace algún tiempo pueda estar en otros aspectos. Recientemente, el proyecto necesita desarrollar un mini programa, que solo utilice Spring Boot para implementar un servicio de fondo. Los casos de código relevantes se compartirán más tarde para que no todos se confundan cuando realicen servicios de back-end mini del programa.
Bajo el arranque de primavera, se proporcionan de forma predeterminada varios grupos de conexión disponibles (DBCP, DBCP2, Tomcat, Hikari). Por supuesto, Druid no es compatible con Druid. Druid proviene de un grupo de conexión de código abierto de Alibaba. Proporciona funciones de monitoreo muy excelentes. Déjame compartir contigo cómo integrarte con Spring Boot.
Entorno de versión
Spring Boot 1.5.2. Release, Druid 1.1.6, JDK1.7
Integración del sistema
Agregar dependencia de pom.xml:
< <SartifactId> mysql-confonector-java </artifactid> </pendency> <!-Druid-> <Spendency> <MoupRiD> com.alibaba </groupid> <artifactid> druid </arfactid> <versión> 1.1.6 </sersion> </pelepency>
Configurar Application.Properties:
#Fuente de datos Spring.Datasource.Url = JDBC: mysql: //192.168.1.66: 3306/spring_boot? caracterSencoding = UTF-8 & USessl = falsspring.dataSource.Username = rootspring.da.da.da tasource.password = rootspring.dataSource.driver-class-name = com.mysql.jdbc.driverspring.datasource.type = com.alibaba.druid.pool.druiddataSource# Inicializar tamaño, mínimo, máximo spring.dataSource.initialSize = 1spring.dataSource.minidle = 3spring.datasource.maxactive = 20# Configure el tiempo para obtener la conexión que espera el tiempo de espera Spring.dataSource.maxwaxwait = 60000# Configure la configuración de la cantidad que lleva detectar una vez, detectar la conexión de inactividad que debe ser cerrada, in Milliswaits = 60000# Configure la forma de detectar la vez que lleva detectar una vez, detectar la conexión inactiva que debe ser cerrada, in Milliswaits = 60000# Configure la forma de detectar la vez que se tarda una vez, detectar la conexión inactiva que necesita ser cerrada, In Milliseits = 60000. spring.dataSource.timeBetweenEvictionRunsMillis = 60000# Configure el tiempo mínimo para una conexión para sobrevivir en el grupo, en Millisegunds Spring.Datasource.MinevictableDletimillis = 30000Spring.datasource.ValidationQuery = Select SELECT 'x'spring.datasource.test whelliidle = truespring.datasource.testonborrow = falspring.datasource.testonreturn = false# abre pscache y especifica el tamaño de pscache en cada conexión spring.datasource.poolpreparedStatements = tuespring.dataSource.MaxPoolPreparedstateStize Configure filtros para las estadísticas de monitoreo interceptadas. Después de eliminarlo, la interfaz de monitoreo SQL no se puede contar. 'Wall' se usa para Firewall Spring.datasource.filters = stat, wall, slf4j# abrir la función de mergesql a través de la propiedad ConnectProperties; Registros SQL lentos Spring.datasource.ConnectionProperties = Druid.stat.mergesql = true; druid.stat.slowsqlmillis = 5000
Configurar el archivo YML (elija uno de los dos anteriores)
Spring: DataSource: URL: JDBC: MySQL: //192.168.1.66: 3306/spring-boot? UseUnicode = true y caracteres y caracteres = utf-8 & Usessl = falso nombre de usuario: contraseña de raíz: controlador-class-classs-name: com.mysql.jdbc.driver: MySQl Type: com.alibaba.druid.pool.druiddataSource # La siguiente es una configuración complementaria para el grupo de conexión, que se aplica a todas las fuentes de datos anteriores # inicializar el tamaño, mínimo, máximo inicial: 1 minidle: 3 maxactive: 20 # Configure el tiempo para obtener el tiempo de espera de conexión de conexión que debe ser el máximo de tiempo de espera: 60000 # Configurar cuánto tiempo lleva realizar una detección de detección para detectar detectar el tiempo inactivo, que se detiene el tiempo de espera de la conexión, que se necesita. MilliseCond TimeBetweenEvictionRunsmillis: 60000 # Configure el tiempo mínimo para sobrevivir en el grupo MinevictableDletImemillis: 30000 ValidationQuery: Seleccione 'X' testHileidle: True testOnBorrow: false testonReturn: falso # abre pscache y especificar el tamaño de pscScache en cada conexión a la agrupación de la agrupación: # Configurar filtros para la intercepción de estadísticas de monitoreo. Después de eliminar la interfaz de monitoreo SQL, la interfaz de monitoreo no se puede contar. 'Wall' se utiliza para filtros de firewall: STAT, Wall, SLF4J # Open MergesQL Función a través de la propiedad ConnectProperties; SQL Registro SQL ConnectionProperties: druid.stat.mergesql = true; druid.stat.slowsqlmillis = 5000
Configurar la función de monitoreo y estadísticas de Druid
importar java.sql.sqlexception; import javax.sql.datasource; import org.slf4j.logger; import org.slf4j.loggerFactory; import og.springframework.boot.context.properties.configurationPerties; import org.springframework.boot.web.servlet.filterregistrationBean; import org.springframework.boot.web.servlet.servletregistrationBean; importar org.springframework.context.annotation.bean; import og.springframework.context.context.configuration; com.alibaba.druid.pool.druiddataSource; import com.alibaba.druid.support.http.statviewservlet; import com.alibaba.druid.support.http.webstatfilter;/*** Alibaba Conexión de conexión de la base de la base de datos Druid* creator* creator* creator* creado en marzo, creado en marzo; 2018*/@ConfigurationPublic Class DruidConfiguration {private static final logger logger = loggerFactory.getLogger (druidConfiguration.class); cadena final estática privada db_prefix = "spring.dataSource"; @Bean Public ServletregistrationBean DruidServlet () {logger.info ("Init Druid Servlet Configuration"); ServletregistrationBean servletregistrationBean = new ServletregistrationBean (new StatViewServlet (), "/Druid/*"); // IP Whitelist (sin configuración o vacío, todo el acceso está permitido) ServletregistrationBean.addinitParameter ("Permitir", ""); // Lista negra IP (negar tiene prioridad sobre permitiendo cuando coexisten) //servletregistrationbean.addinitparameter("deny "," 192.168.1.100 "); // Gestión de consolas usuarios servletregistrationBean.addinitParameter ("LoginUsername", "Admin"); servletregistrationBean.addinitParameter ("LoginPassword", "Admin"); // es posible restablecer los datos y deshabilitar el "restablecer en la página html todas" función servletregistrationBean.addinitParameter ("restablecido", "falso"); regreso servletregistrationbean; } @Bean public FilterRegistrationBean FilterRegistrationBean () {FilterRegistrationBean FilterRegistrationBean = new FilterRegistrationBean (new WebStatFilter ()); filterregistrationbean.addurlpatterns ("/*"); FilterRregistrationBean.addinitParameter ("EXCLUSIONES", "*.js,*. Gif,*. Jpg,*. Png,*. Css,*. ICO,/Druid/*"); return filtreRregistrationBean; } @ConfigurationProperties (prefix = db_prefix) IdataSourceProperties {private String url; nombre de usuario de cadena privada; contraseña de cadena privada; Cadena privada DriverClassName; privado int inicializize; privado int minidle; privado int maxactive; privado int maxwait; Private int TimebetweenEvictionRunsmillis; Private int minevictableidletimillis; Validación de cadena privada; Prueba booleana privada Whipleidle; Prestado booleano privado; Private Boolean TestOnreturn; Establecimientos privados de piscinas booleanas; privado int maxPoolPreparedStatementPonConnectsize; filtros de cadena privada; ConnectionProperties de cadena privada; @Bean Public DataSource DataSource () {DruidDataSource DataSource = new DruidDataSource (); dataSource.SetUrl (URL); dataSource.setUsername (nombre de usuario); dataSource.setPassword (contraseña); dataSource.setDrivClassName (DriverClassName); // Configuración DataSource.SetInitialSize (InitialSize); dataSource.setminidle (minidle); DataSource.SetMaxActive (MaxActive); DataSource.SetMaxWait (MaxWait); DataSource.SetTimeBetweenEvictionRunsMillis (TimetweenEvictionRunsMillis); dataSource.SetMinevictableIdletimemillis (minevictableidletimillis); DataSource.SetValidationQuery (ValidationQuery); dataSource.Settest WhipleIdle (test WhipleIdle); DataSource.SettonBorrow (testOnBorrow); dataSource.settestonreturn (testOnreturn); dataSource.setPoolPreparedStatements (PoolPreparedStatements); DataSource.SetMaxPoolPreparedStatementPonConnectsize (MaxPoolPreparedStatementPonnectsize); intente {dataSource.setFilters (filtros); } Catch (Sqlexception E) {System.err.println ("Filtro de inicialización de configuración Druid:" + e); } DataSource.SetConnectionProperties (ConnectionProperties); devolver datos de datos; } public String getUrl () {return url; } public void seturl (url de cadena) {this.url = url; } public String getUsername () {return UserName; } public void setUsername (String UserName) {this.Username = username; } public String getPassword () {return Password; } public void setPassword (String Password) {this.password = contraseña; } public String getDriverClassName () {return DriverClassName; } public void setdriverClassName (String DriverClassName) {this.DrivClassName = DriverClassName; } public int getInitialSize () {return inicialSize; } public void setInitialSize (int InitialSize) {this.initialSize = inicialSize; } 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 } public void setTimeBetweenEvictionRunsMillis (int timetweenEvictionRunsMillis) {this.timeBeteWeeVictionRunsMillis = TimeBetweenEvictionRunsMillis; } public int getMinEvictableIdLetImillis () {return mineVictableDletImillis; } public void setMinevictableIdletImemillis (int min mineVictableIdletimemillis) {this.MinevictableIdletimemillis = mineVictableIdletImillis; } public String getValidationQuery () {return ValidationQuery; } public void setValidationQuery (String ValidationQuery) {this.ValidationQuery = ValidationQuery; } public boolean istest whileidle () {return test whelliDle; } public void settest whelliidle (boolean test whileidle) {this.test whelliDle = test whelliDle; } public boolean istestonBorrow () {return testOnBorrow; } public void settonBorrow (boolean testOnBorrow) {this.testonBorrow = testOnBorrow; } public boolean istestonreturn () {return testOnreturn; } public void settestonreturn (boolean testOnreturn) {this.testonreturn = testOnreturn; } public boolean isPoolPreparedStatements () {return PoolPreparedStatements; } public void setPoolPreparedStatements (Boolean PoolPreparedStatements) {this.PoolPeparedStatements = PoolPreparedStatements; } public int getMaxPoolPreparedStatementPonConnectsize () {return maxPoolPreparedStatementPonConnectsize; } public void setMaxPoolPreparedStatementPonConnectsize (int maxPoolPreparedStatementPonConnectsize) {this.maxPoolPreparedStatEmentPonConnectsize = maxPoolPreparedStatementPonConnectsize; } public String getFilters () {Filtros de retorno; } public void setFilters (filtros de cadena) {this.filters = filtros; } public String getConnectionProperties () {return ConnectionProperties; } public void setConnectionProperties (String ConnectionProperties) {this.ConnectionProperties = ConnectionProperties; }}}Inicie la aplicación, la dirección de acceso: http: // localhost: 8080/druid/, ingrese la contraseña de cuenta configurada e inicie sesión, y puede ver la fuente de datos y las estadísticas SQL y otros monitoreo. Las representaciones son las siguientes:
Por supuesto, Alibaba también proporciona la versión integrada de SpringBoot de Druid (arranque de boot Druid-Spring), puede consultar el siguiente enlace.
referirse a:
https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
https://github.com/alibaba/druid/wiki
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.