봄 부팅 여행 데이터 (C)

사용 드루이드 데이터베이스 연결 풀

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을 { 
    
}

저장소 2.6 새로운 Entity 클래스, 컨트롤러 같은 많은하지 말.

2.7 액세스는 로컬 호스트 : 8080 / 드루이드, 로그인 후에는 모니터링 정보를 볼 수 있습니다.

추천

출처www.cnblogs.com/xc-xinxue/p/12417762.html