Prefácio
Não atualizei os artigos da Spring Boots Series há muito tempo. Você acha que está ocupado? Também é possível que o foco de algum tempo atrás possa estar em outros aspectos. Recentemente, o projeto precisa desenvolver um mini-programa, que está apenas usando a Spring Boot para implementar um serviço de back-end. Os casos de código relevantes serão compartilhados posteriormente para que todos não fiquem confusos ao prestar serviços de back-end do Mini Program.
Sob bota de primavera, vários pools de conexão disponíveis (DBCP, DBCP2, Tomcat, Hikari) são fornecidos por padrão. Obviamente, o Druid não suporta Druid. O Druid vem de um pool de conexão de código aberto do Alibaba. Ele fornece excelentes funções de monitoramento. Deixe -me compartilhar com você como integrar a Spring Boot.
Ambiente de versão
Botagem de primavera 1.5.2.Release, Druid 1.1.6, JDK1.7
Integração do sistema
Adicione Pom.xml Dependência:
<!-JPA-> <Depencence> <Puerpid> org.springframework.boot </frugiD> <stifactId> Spring-boot-Starter-Data-jpa </sutifactId> </pendencency> <!-MySQL-> <Dependency> <puriDiD> mysql </grupo> <TarfactId> mysql-conector-java </stifactId> </dependency> <!-druid-> <pendency> <purboupid> com.alibaba </frupiD> <stifactId> druid </stifactId> <versão 1.1.6 </versuse> </pendence>
Configurar Application.Properties:
#Data fonte spring.dataSource.url = jdbc: mysql: //192.168.1.66: 3306/spring_boot? caracterencoding = 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# Inicialize o tamanho, mínimo, mola máxima.dataSource.initialSize = 1spring.dataSource.minidle = 3spring.dataSource.maxactive = 20# Configure o tempo para obter o tempo de espera para que o tempo limite o tempo limite. spring.dataSource.TimeBetweenEvictionRunsmillis = 60000# Configure o tempo mínimo para uma conexão sobreviver na piscina, em milissegundos primavera.dataSource.mineVictableIdletimemillis = 30000spring.datasource.validationQuery = select = select = Selection = SelectImil. 'x'spring.dataSource.testwhileidle = truespring.dataSource.testonborrow = falspring.dataSource.testoNreturn = false# Abra o PSCACHE e especifique o tamanho do pscache em cada conexão spring.dataSource.poolPreparedStatements = truespring.datasource.maxpoolPreparedStatementPerConnectionsize = 20# Configure filtros para monitoramento estatísticas interceptadas. Depois de removê -lo, a interface de monitoramento SQL não pode ser contada. 'Wall' é usado para o firewall spring.dataSource.filters = stat, parede, slf4j# aberto função de mescleql através da propriedade ConnectProperties; Lenta SQL Records spring.dataSource.ConnectionProperties = druid.stat.mergesql = true; druid.stat.slowsqlmillis = 5000
Configure o arquivo YML (escolha um dos dois acima)
Spring: DataSource: URL: JDBC: MySQL: //192.168.1.66: 3306/spring-boot? useunicode = true & caracterizador de caracteres = utf-8 & usessl = FALSO Nome de usuário: Raiz Senha: Raiz-Class-name: com.mysql.jdbc.Drata com.alibaba.druid.pool.druiddataSource # A seguir, é apresentado uma configuração suplementar para o pool de conexões, que é aplicado a todas as fontes de dados acima # Inicialize tamanho, mínimo, máximo inicialSize: 1 Minidle: 3 maxativo: 20 # Configurar o tempo para obter a conexão com o tempo de espera para o tempo de espera: 60000 # Config Fechado, em milissegundos em tempo, entrevicationRunsmillis: 60000 # Configure o tempo mínimo para sobreviver no pool minevictableIdletimemillis: 30000 ValidationQuery: selecione 'x' testhileidle: True TestonBorrow: cada conexão de teste: False # aberto PSCACHST e Especificar o tamanho do PSCACHE MaxPoolPreparedStatementPerConnectionsize: 20 # Configure filtros para monitorar estatísticas interceptando. Depois de remover a interface de monitoramento SQL, a interface de monitoramento não pode ser contada. 'Wall' é usado para filtros de firewall: stat, parede, slf4j # aberto função de mesclescl através da propriedade ConnectProperties; SQL RECORD SLET SQL ConnectionProperties: druid.stat.mergesql = true; druid.stat.slowsqlmillis = 5000
Configurar a função de monitoramento e estatística de Druid
importar java.sql.sqLexception; importar javax.sql.datasource; importar org.slf4j.logger; importar org.slf4j.loggerfactory; importar org.springframework.boot.context.properties.configuratureProperties; org.springframework.boot.web.servlet.filterRegistrationBean; importar org.springframework.boot.web.servlet.servletregistrationBean; importação; com.alibaba.druid.pool.druiddataSource; importar com.alibaba.druid.support.http.statviewservlet; import com.alibaba.druid.support datrid.http.webstatfilter; 2018*/@ConfigurationPublic Classe druidConfiguration {private Static Final Logger Logger = LoggerFactory.getLogger (DruidConfiguration.class); String 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 (sem configuração ou vazio, todo o acesso é permitido) servletRegistrationBean.addinitParameter ("permitir", ""); // IP Blacklist (nega tem precedência permitir ao coexistir) //servletRegistrationBean.addinitParameter("deny "," 192.168.1.100 "); // Console Management User ServletRegistrationBean.addinitParameter ("LoginUserName", "Admin"); servletRegistrationBean.addinitParameter ("LogInpassword", "admin"); // é possível redefinir os dados e desativar a "redefinição na página html all" function servletRegistrationBean.addinitParameter ("Redeecenável", "false"); retornar servletRegistrationBean; } @Bean public filterRegistrationBean filterRegistrationBean () {filterRegistrationBean filterRegistrationBean = new FilterRegistrationBean (new webstatfilter ()); filtroRegistrationBean.addurlpatterns ("/*"); filterRegistrationBean.addinitParameter ("exclusões", "*.js,*. gif,*. jpg,*. png,*. css,*. ico,/druid/*"); retornar filtroRegistrationBean; } @ConfigurationProperties (prefix = db_prefix) class IDataSourceProperties {private string url; Nome de usuário privado de string; senha de sequência privada; Driver de string privateclassName; Private int InitialSize; private int minidle; privado int maxactive; privado int maxwait; private int timebetweenEvictionRunsmillis; privado int minevictableIdletimemillis; Private String ValidationQuery; Privado booleano testado pelo tempo; Private Boolean TestonBorrow; Private Boolean testOnReturn; Estados Unidos Privados Booleanos PoolPepared; private int maxpoolPreparedStatementPerConnectionsize; filtros de string privada; Private String ConnectionProperties; @Bean public DataSource DataSource () {druidDataSource DataSource = new DruidDataSource (); DataSource.seturl (URL); DataSource.setUserName (nome de usuário); DataSource.SetPassword (senha); DataSource.SetDriverClassName (DriverClassName); // Configuração DataSource.SetInitialSize (InitialSize); DataSource.setminidle (minidle); DataSource.SetMaxActive (maxactive); DataSource.setMaxWait (Maxwait); dados DataSource.setMineVictableIdLeTimemillis (MineVictableIdLetimEmillis); DataSource.SetValidationQuery (validationQuery); DataSource.setTestwhileIdle (testhileidle); DataSource.setTestonBorrow (testonborrow); DataSource.SetTestOnReturn (testOnReturn); DataSource.SetPoolPreparedStatements (PoolPreparedStatements); DataSource.setMaxPoolPreparedStatementPerConnectionsize (MaxPoolPreparedStatementPerConnectionsize); tente {DataSource.SetFilters (filtros); } catch (sqLexception e) {System.err.println ("Filtro de inicialização da configuração do 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 = nome de usuário; } public string getPassword () {return senha; } public void setPassword (string senha) {this.password = senha; } 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 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 IstestwhileIdle () {return testhileidle; } public void SettStestwhileIdle (boolean testhileidle) {this.testwhileidle = testhileidle; } 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 PoolPreparedStatements; } public void setPoolPreparedStatements (Boolean PoolPreparedStatements) {this.PoolPreparedStatements = PoolPreparedStatements; } public int getMaxPoolPreparedStatementPerConnectionsize () {return maxPoolPreparedStateMentPerConnectionsize; } public void setMaxPoolPreparedStatementPerConnectionsize (int maxPoolPreparedStatementConnectionsize) {this.MaxPoolPreparedStatementPerConnectionsize = maxpoolPreparedStatementPonnectionsize; } public String getFilters () {retornar filtros; } public void setFilters (String filters) {this.filters = filters; } public string getConnectionProperties () {return ConnectionProperties; } public void setConnectionProperties (String ConnectionProperties) {this.ConnectionProperties = ConnectionProperties; }}}Inicie o aplicativo, endereço de acesso: http: // localhost: 8080/druid/, insira a senha da conta configurada e faça login e você pode visualizar as estatísticas da fonte de dados e do SQL e outros monitoramento. As renderizações são as seguintes:
Obviamente, o Alibaba também fornece a versão integrada do Druid no trampolim do Druid (Starter Druid-Spring-Boot), você pode consultar o link a seguir.
Consulte:
https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
https://github.com/alibaba/druid/wiki
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.