사용 드루이드 데이터베이스 연결 풀
1. 왜 사용 드루이드 데이터베이스 연결 풀?
는 최고의 언어 자바 데이터베이스 연결 풀이기 때문에, 많은 실시간 모니터링을 제공합니다.
2. 공식 교육
2.1 종속성을 도입
2.2 드루이드 프로젝트 설정 파일
# 데이터베이스 구성 spring.datasource.driver - 클래스 -name = com.mysql.cj.jdbc.Driver spring.datasource.url = JDBC를 : MySQL은 : // ? 로컬 호스트 : 3306 / characterEncoding 테스트 = UTF-8 useSSL = 거짓 & serverTimezone % = GMT = 사실 2B8의에 allowPublicKeyRetrieval spring.datasource.username = 루트 spring.datasource.password = 123456abc 드루이드는 멀티 다중 속성 spring.datasource.type이 연결 풀 구성하는 것입니다 구성해야합니다 # 사용 spring.datasource.type을 = com.alibaba.druid.pool .DruidDataSource 구성 연결 풀 # 1 또는 # 초기 최대 크기, 최소 spring.datasource.druid.initial - 크기 =. 5 spring.datasource.druid.min -idle =. 5 spring.datasource.druid.max= 20 - 활동이다 # 구성 연결 대기 시간 종료 시각을 취득 spring.datasource.druid.max 잠깐 = 60000 개 밀리 초 간격에서 # 그러한 검출 주파수 유휴 연결을 폐쇄 할 검출 spring.datasource.druid.time -between을 밀리 = 60000 --- 퇴거의 실행 # 구성된 최소 시간 접속 세포 생존 밀리 spring.datasource.druid.min 밀리 -evictable-IDLE 타임 - = 300,000의 spring.datasource.druid.validation -query = SELECT . 1 이중에서 spring.datasource.druid.test - 동안 -idle = true로 spring.datasource.druid.test -ON = BORROW- false로 spring.datasource.druid.test -On- 반환 = false로 - 준비된 명령문 = # 개방 PSCache, 각을 개발하는 커넥터 연결 크기 PSCache spring.datasource.druid.pool true로 spring.datasource.druid.max의 -pool - 준비된-의 성명 당 연결 크기 = 20 개 # 구성 모니터링 통계를 들어, 벽 방화벽하지 통계를 모니터링 인터페이스는 SQL을 제거한 후, 필터를 가로 봄 .datasource.druid.filters = STAT, 벽, log4j에
2.3 구성 프로파일 참조 만들기
패키지 com.example.demo.config을; 수입 com.alibaba.druid.pool.DruidDataSource; 수입 org.springframework.beans.factory.annotation.Value; 수입 org.springframework.context.annotation.Bean; 수입 org.springframework.context.annotation.Configuration; 수입 org.springframework.context.annotation.Primary; 수입 은 javax.sql.DataSource; 수입 은 java.sql.SQLException; @Configuration 공공 클래스 DruidConfig { @Value ( "$ {spring.datasource.url}" ) 개인 문자열 DBURL; @값("$ {spring.datasource.username}" ) 개인 문자열 사용자 이름; @Value ( "$ {spring.datasource.password}" ) 개인 문자열 비밀 번호; @Value ( "$ {spring.datasource.driver 클래스 이름}" ) 개인 문자열 driverClassName; @Value ( "$ {spring.datasource.druid.initial 크기}" ) 개인 INT initialSize가; @Value ( "$ {spring.datasource.druid.min 유휴}" ) 개인 INT minIdle; @Value ( "$ {spring.datasource.druid.max 활성}" maxActive; @Value ( "$ {spring.datasource.druid.max - 대기}" ) 개인 INT maxWait; @Value ( "$ {spring.datasource.druid.time 사이 - 강제 퇴거 - 실행 - 밀리}" ) 개인 INT의 timeBetweenEvictionRunsMillis; @Value ( "$ {spring.datasource.druid.min-evictable - 유휴 시간 - 밀리}" ) 개인 INT의 minEvictableIdleTimeMillis; @Value ( "$ {spring.datasource.druid.validation 쿼리}" ) 개인 문자열 validationQuery; @Value ( "$ {spring.datasource.druid.test - 동안 - 유휴}" ) 개인 부울 testWhileIdle을; @Value ( "$ {spring.datasource.druid.test - 온 - 차용}" ) 개인 부울 testOnBorrow; @Value ( "$ {spring.datasource.druid.test-에 복귀}" ) 개인 부울 testOnReturn; @Value ( "$ {spring.datasource.druid.pool 준비된 명령문}" ) 개인 부울 poolPreparedStatements; @Value는 ( "$ {spring.datasource.druid.max 풀 준비된 문 당 연결 크기}" ) 개인 INT maxPoolPreparedStatementPerConnectionSize; @값("$ {spring.datasource.druid.filters}" ) 개인 문자열 필터; @Value ( "{spring.datasource.druid.connection-속성}" ) 개인 문자열 ConnectionProperties와; @Bean @primary // 主数据源 공용 데이터 소스는 dataSource () { DruidDataSource 소스 = 새로운 DruidDataSource (); datasource.setUrl ( 이 .dbUrl); datasource.setUsername (사용자 이름); datasource.setPassword (비밀번호); datasource.setDriverClassName (driverClassName); // 구성 datasource.setInitialSize (initialSize가); datasource.setMinIdle (minIdle); datasource.setMaxActive (maxActive); datasource.setMaxWait (maxWait); datasource.setTimeBetweenEvictionRunsMillis (timeBetweenEvictionRunsMillis); datasource.setMinEvictableIdleTimeMillis (minEvictableIdleTimeMillis); datasource.setValidationQuery (validationQuery); datasource.setTestWhileIdle (testWhileIdle); datasource.setTestOnBorrow (testOnBorrow); datasource.setTestOnReturn (testOnReturn); datasource.setPoolPreparedStatements (poolPreparedStatements); datasource.setMaxPoolPreparedStatementPerConnectionSize (maxPoolPreparedStatementPerConnectionSize); 시도 { datasource.setFilters (필터); } 캐치 (예외 : SQLException 전자) { } datasource.setConnectionProperties (ConnectionProperties와); 반환 데이터 소스; } }
2.4 새로운 드루이드 필터, 일부 정적 파일을 필터링
// 일부 정전기를 필터링하는 데 사용하는 파일 @WebFilter (FILTERNAME = "druidWebStatFilter"urlPatterns = "/ *" , initParams = { @WebInitParam (이름 = "제외"값 = "*. JS *. GIF, *. JPG * .BMP, * .png를, *. CSS, *. ICO / 드루이드 / * ") // 무시 자원 } ) 공용 클래스 DruidFilter (가) 확장 WebStatFilter을 { }
IP 페이지를 관리하는 데 사용되는 2.5 새로운 DruidServlet 및 기타 정보
// 이러한 클래스의 발사에 @ServletComponentScan 추가 할 필요를 필터링 및 다른 정보 IP를 관리하기 위해 사용되거나으로 스캔 할 수 @WebServlet (urlPatterns = "/ 사제 / *" , initParams가 = { @WebInitParam (이름 = "를 허용"값 =을 "") // 구성하거나 비어 있지 화이트리스트 (IP는 모든 액세스) 수 ) = ""가치 "를 거부 = @WebInitParam (이름을" // IP 블랙리스트합니다 (허용보다 우선 거부) (@WebInitParam를 = 이름 "loginUsername"값 = "ADMIN") // 로그인 드루이드 관리 페이지의 사용자 이름 @WebInitParam (이름 = "loginPassword"값 = "ADMIN") // 로그인 드루이드 관리 페이지 암호 }) 공용 클래스 DruidServlet (가) 확장 StatViewServlet을 { }