Druid是Java語言中最好的數據庫連接池。 Druid相比於其他的數據庫連接池,有兩大特性:
今天演示一下Spring Boot集成Druid。
實戰
1、添加Maven依賴。
Spring Boot版本使用的是1.x的,2.x的版本druid starter還不支持。不過自定義也是沒問題的。
<!--starter-web 方便我們查看效果--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--使用Mybatis也可以,druid提供的只是連接池--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.6</version> </dependency>
配置Druid
2、Druid應用的配置。
server: port: 9011 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver druid: initial-size: 5 max-active: 10 min-idle: 5 max-wait: 60000 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 validation-query: select 1 validation-query-timeout: 60000 test-on-borrow: false test-on-return: false test-while-idle: true time-between-eviction-runs-millis: 60000 filter: stat: log-slow-sql: true db-type: mysql slow-sql-millis: 2000 stat-view-servlet: login-username: druid login-password: druid allow: 127.0.0.1 url-pattern: /druid/* username: root password: 123456 url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8
通過JavaBean的配置更靈活一些,我們通過JavaBean來配置。
@Configurationpublic class DruidConfig { @Bean public JdbcTemplate jdbcTemplate(){ return new JdbcTemplate(druidDataSource()); } // ConfigurationProperties可以直接把應用配置的spring.datasource.druid屬性開頭的值注入到DruidDataSource中@ConfigurationProperties(prefix = "spring.datasource.druid") @Bean(initMethod = "init",destroyMethod = "close") public DruidDataSource druidDataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); // 添加druid的監控過濾器,當前只演示監控的功能,因此只有一個過濾器,可以實現多個過濾器LinkedList<Filter> filtersList = new LinkedList(); filtersList.add(filter()); druidDataSource.setProxyFilters(filtersList); return druidDataSource; } @Bean public Filter filter(){ StatFilter statFilter = new StatFilter(); // SQL執行時間超過2s種的被判定為慢日誌statFilter.setSlowSqlMillis(2000); //顯示慢日誌statFilter.setLogSlowSql(true); //合併SQL,有時,一些相同的慢日誌過多影響閱讀,開啟合併功能statFilter.setMergeSql(true); return statFilter; } // 監控的面板@Bean public ServletRegistrationBean servletRegistrationBean(){ // 註冊自己的Sevlet return new ServletRegistrationBean(new StatViewServlet(),"/druid/*"); }} 3、新建SQL執行測試
使用JDBCTeplate選取數據庫中的數據,我們只是演示Druid的監控效果。
@RestController@SpringBootApplicationpublic class DaoApplication { public static void main(String[] args) { SpringApplication.run(DaoApplication.class,args); } @Autowired JdbcTemplate jdbcTemplate; @RequestMapping("/test") public List test(){ final List<Integer> idList = new LinkedList<Integer>(); jdbcTemplate.query("select * from sh_test1", new RowCallbackHandler() { @Override public void processRow(ResultSet rs) throws SQLException { idList.add(rs.getInt(1)); } }); return idList; }}運行查看效果
5、演示完畢
到這一步,Druid已經可以在Spring Boot中使用了,Druid提供了很多監控的選項,文章篇幅有限, 只介紹一下Druid集成Spring Boot的用法。
最後
這篇文章演示了一下Druid在SpringBoot中的使用。有關Druid的使用請看下面的參考。
參考
[Druid常見用法] (https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。