머리말
스프링 부트 시리즈 기사를 오랫동안 업데이트하지 않았습니다. 당신은 바쁘다고 생각합니까? 얼마 전의 초점이 다른 측면에있을 수도 있습니다. 최근이 프로젝트는 스프링 부트를 사용하여 백엔드 서비스를 구현하는 미니 프로그램을 개발해야합니다. 관련 코드 케이스는 나중에 공유되므로 미니 프로그램 백엔드 서비스를 수행 할 때 모든 사람이 혼란스럽지 않도록합니다.
Spring Boot에서는 몇 가지 사용 가능한 연결 풀 (DBCP, DBCP2, Tomcat, Hikari)이 기본적으로 제공됩니다. 물론 드루이드는 드루이드를 지원하지 않습니다. 드루이드는 알리바바의 오픈 소스 연결 풀에서 나옵니다. 매우 우수한 모니터링 기능을 제공합니다. Spring Boot와 통합하는 방법을 알려 드리겠습니다.
버전 환경
Spring Boot 1.5.2. Release, Druid 1.1.6, JDK1.7
시스템 통합
pom.xml 종속성 추가 :
<!-jpa-> <pectinement> <groupId> org.springframework.boot </groupId> <artifactID> 스프링-부트 스타터 -jpa </artifactid> </fectionency> <!-mysql-> <pection> <groupid> mysql </groupid> <artifactid> mysql-connector-java </artifactid> </dependency> <!-druid-> <pectionement> <groupid> com.alibaba </groupId> <artifactid> druid </artifactid> </version> </fectionency>
Application.Properties 구성 :
#DATA 소스 spring.datasource.url = jdbc : mysql : //192.168.1.66 : 3306/spring_boot? char tasource.password = rootspring.datasource.driver class-name = com.mysql.jdbc.driverspring.datasource.type = com.alibaba.druid.pool.druiddatasource# 초기화 크기, 최소, 최대 스프링 .datasource.initialsize = 1spring.datasource.minidle = 3spring.datasource.maxActive = 20# 연결 대기 시간 초과 스프링을 얻는 데 시간을 구성하는 데 시간이 걸리는 시간을 감지하는 데 시간이 걸리는 시간이 걸리는 시간을 결정합니다. spring.datasource.timebetweenevictionRunsmillis = 60000# 수영장에서 생존 할 수있는 최소 시간을 milliseconds spring.datasource.minevictableDletimemillis = 30000spring.datasource.validationquery = select. 'x'spring.datasource.testestwhileidle = truespring.datasource.testonborrow = falspring.datasource.testonreturn = false# 열린 pscache를 열고 각 연결에서 pscache의 크기를 지정합니다. spring.datasource.poolpreparedStatements = truespring.datasource.MaxPoolPreparedStatementPerConnectionsize = 20# 가로 채는 통계 모니터링 필터 구성. 제거 후 모니터링 인터페이스 SQL을 계산할 수 없습니다. '벽'은 방화벽 스프링에 사용됩니다. Datasource.filters = STAT, WALL, SLF4J# ConnectProperties 속성을 통한 MERGESQL OPEN OPEN MERGESQL 기능; 느린 SQL 레코드 스프링
YML 파일 구성 (위의 두 가지 중 하나를 선택하십시오)
Spring : DataSource : url : jdbc : mysql : //192.168.1.66 : 3306/spring-boot? useunicode = true & charac com.alibaba.druid.pool.druiddatasource # 다음은 연결 풀의 모든 데이터 소스에 적용되는 보충 설정입니다. 위의 모든 데이터 소스 # 초기화 크기, 최소, 최대 이니셜 크기 : 1 Minidle : 3 Max -active : 20 # Detection to gentection max wait : 60000 # detection a detection a toing a detection a toing a dettect a tecte a detection a detection a dettect a tecte 밀리 초 사이에 밀리 초 사이에 닫습니다. maxpoolpreparedstatementperconnectionsize : 20 # 통계 인터셉트 모니터링 필터 구성. 모니터링 인터페이스 SQL을 제거한 후 모니터링 인터페이스를 계산할 수 없습니다. '벽'은 방화벽 필터에 사용됩니다 : STAT, WALL, SLF4J # ConnectProperties 속성을 통한 MERGESQL 기능; 느린 SQL 레코드 ConnectionProperties : druid.stat.mergesql = true; druid.stat.slowsqlmillis = 5000
Druid의 모니터링 및 통계 기능을 구성하십시오
import java.sql.sqlexception; import javax.sql.datasource; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.boot.context.properties.configurationProperties; 가져 오기; org.springframework.web.web.servlet.filterregistrationbean; import org.springframework.boot.web.servlet.servletregistrationbean; import org.springframework.context.bean; import org.springframetw.context.annotation.configigation; com.alibaba.druid.pool.druiddatasource; import com.alibaba.druid.support.http.statviewservlet; import com.alibaba.druid.support.http.webstatfilter;/*** alibaba database connection pool druid configuration* creative on 7* creative by 7 on 7* by 7 on 7* creative on 7* creative* 2018*/@configurationPublic Class druidConfiguration {private static final logger = loggerfactory.getLogger (druidConfiguration.Class); 개인 정적 최종 문자열 db_prefix = "spring.datasource"; @bean public servletregistrationbean druidservlet () {logger.info ( "init druid servlet configuration"); servletregistrationbean servletregistrationbean = new servletregistrationbean (new statviewservlet (), "/druid/*"); // IP 화이트리스트 (구성 또는 비어 있지 않음, 모든 액세스가 허용됨) servletregistrationBean.AdDinitParameter ( "allow", ""); // ip blacklist (공존 할 때 허용) //servletregistrationbean.addinitparameter("Deny ","192.168.1.100 "); // 콘솔 관리 사용자 servletregistrationBean.addinitParameter ( "loginusername", "admin"); servletregistrationBean.addinitparameter ( "loginpassword", "admin"); // 데이터를 재설정하고 "HTML 페이지의 재설정을 비활성화 할 수 있습니까? 리턴 servletregistrationbean; } @bean public filterregistrationbean filterregistrationBean () {FilterRegistrationBean FilterRegistrationBean = new FilterRegistrationBean (new WebStatFilter ()); FilterRegistrationBean.AddUrlPatterns ( "/*"); FilterRegistrationBean.addinitParameter ( "제외", "*.js,*. gif,*. jpg,*. png,*. css,*. ico,/druid/*"); 반환 필터 등록 비안; } @configurationProperties (prefix = db_prefix) class idatasourceProperties {private String URL; 개인 문자열 사용자 이름; 개인 문자열 비밀번호; 개인 문자열 DriverClassName; 개인 int 이니셜 크기; 개인 int 미니 다리; 개인 int maxactive; 개인 INT Maxwait; 개인 int timebetweenevictionRunsmillis; Private int MineVictableIdleTimemillis; 개인 문자열 validationQuery; 개인 부울 시험; 개인 부울 testonbrour; 개인 부울 testonreturn; 개인 부울 풀 준비 상태; Private Int MaxPoolPreperedStatementPerconnectionsize; 개인 문자열 필터; 개인 문자열 ConnectionProperties; @Bean Public DataSource DataSource () {Druiddatasource DataSource = 새로운 Druiddatasource (); DataSource.setUrl (URL); DataSource.setusername (사용자 이름); DataSource.setpassword (비밀번호); DataSource.setDriverClassName (DriverClassName); // configuration dataSource.setInitialSize (이니셜 크기); DataSource.setminidle (Minidle); DataSource.setMaxActive (maxactive); DataSource.setmaxwait (Maxwait); DataSource.settimebetweenevictionRunsmillis (TimeBetweenevictionRunsmillis); DataSource.SetMineVictableIdleTimemillis (MineVictableDletimemillis); DataSource.setValidationQuery (ValidationQuery); DataSource.SetTestWhileIdle (테스트 whileIdle); DataSource.SetTestOnborrow (TestOnBorrow); DataSource.SetTestOnreturn (TreastonReturn); DataSource.setPoolpreparedStatements (poolpreparedStatements); DataSource.setMaxPoolPreparedStatementPerConnectionsize (maxpoolpreparedStatemperConnectionsize); try {dataSource.setFilters (필터); } catch (sqlexception e) {system.err.println ( "druid configuration initialization 필터 :" + e); } dataSource.setConnectionProperties (ConnectionProperties); 반환 데이터 소스; } 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 password; } public void setpassword (문자열 비밀번호) {this.password = password; } public String getDriverClassName () {return driver className; } public void setDriverClassName (String DriverClassName) {this.driverClassName = DriverClassName; } public int getInitialSize () {return initialsize; } public void setInitialSize (int initialsize) {this.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 void settimebettimevictionRunsmillis (int timebetweenevictionRunsmillis) {this.TimeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; } public int getMineVictableDletimEmillis () {return minevictableDletimemillis; } public void setMineVictableDletimEmillis (int minevictableDletimEmillis) {this.minevictableDletimemillis = minevictableDletimemillis; } public String getValidationQuery () {return validationQuery; } public void setValidationQuery (String validationQuery) {this.validationQuery = validationQuery; } public boolean istestwhileIdle () {return testwhileIdle; . } public boolean istestonborrow () {return testonborrow; } public void settestonborrow (부울 testonborrow) {this.testonborring = tredonborrow; } public boolean istestonreturn () {return testonreturn; } public void settestonreturn (부울 testonreturn) {this.testonreturn = testonreturn; } public boolean ispoolpreparedStatements () {return poolpreparedStatements; } public void setpoolpreparedStatements (부울 풀 프리 퍼드 스테이트) {this.poolpreparedStatements = poolpreparedStatements; } public int getmaxpoolprepedstatementperconnectionsize () {return maxpoolpreparedStatePerConnectionsize; } public void setmaxpoolprepedStatementPerConnectionsize (int maxpoolpreparedStatementPerConnectionSize) {this.MaxPoolPrepRedStatementPerConnectionsize = maxpoolpreperedStatementPerConnectionsize; } public String getFilters () {리턴 필터; } public void setFilters (문자열 필터) {this.filters = 필터; } public String getConnectionProperties () {return ConnectionProperties; } public void setConnectionProperties (String ConnectionProperties) {this.connectionProperties = ConnectionProperties; }}}응용 프로그램, 액세스 주소 : http : // localhost : 8080/druid/, 구성된 계정 비밀번호를 입력하고 로그인하면 데이터 소스 및 SQL 통계 및 기타 모니터링을 볼 수 있습니다. 렌더링은 다음과 같습니다.
물론 Alibaba는 Druid의 Springboot Integrated 버전 (Druid-Spring-Boot-Starter)을 제공하므로 다음 링크를 참조 할 수 있습니다.
참조 :
https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
https://github.com/alibaba/druid/wiki
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.