这里有新鲜出炉的精品教程, 程序狗速度看过来!
Spring Boot
Spring Boot 项目旨在简化创建产品级的 Spring 应用和服务你可通过它来选择不同的 Spring 平台可创建独立的 Java 应用和 web 应用, 同时提供了命令行工具来允许'spring scripts'.
本篇文章主要介绍了 Spring Boot 使用和配置 Druid,Druid 号称是 Java 语言中最好的数据库连接池, 并且能够提供强大的监控和扩展功能
1 引入依赖包
- <!--druid-->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid</artifactId>
- <version>1.0.27</version>
- </dependency>
2 配置 application.properties
- spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
- spring.datasource.url=jdbc:mysql://localhost:3306/xxxxx?characterEncoding=utf8&useSSL=true&verifyServerCertificate=false
- spring.datasource.username=root
- spring.datasource.password=xxxxx
- spring.datasource.driver-class-name=com.mysql.jdbc.Driver
- # 初始化大小, 最小, 最大
- spring.datasource.initialSize=5
- spring.datasource.minIdle=5
- spring.datasource.maxActive=20
- # 配置获取连接等待超时的时间
- spring.datasource.maxWait=60000
- # 配置间隔多久才进行一次检测, 检测需要关闭的空闲连接, 单位是毫秒
- spring.datasource.timeBetweenEvictionRunsMillis=60000
- # 配置一个连接在池中最小生存的时间, 单位是毫秒
- spring.datasource.minEvictableIdleTimeMillis=300000
- spring.datasource.validationQuery=SELECT 1 FROM DUAL
- spring.datasource.testWhileIdle=true
- spring.datasource.testOnBorrow=false
- spring.datasource.testOnReturn=false
- # 打开 PSCache, 并且指定每个连接上 PSCache 的大小
- spring.datasource.poolPreparedStatements=true
- spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
- # 配置监控统计拦截的 filters, 去掉后监控界面 sql 无法统计,'wall'用于防火墙
- spring.datasource.filters=stat,wall,log4j
- # 通过 connectProperties 属性来打开 mergeSql 功能; 慢 SQL 记录
- spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
- # 合并多个 DruidDataSource 的监控数据
- #spring.datasource.useGlobalDataSourceStat=true
- spring.jpa.database=mysql
- spring.jpa.show-sql=true
- spring.jpa.hibernate.ddl-auto=update
- spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
- # 懒加载配置
- spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
3 目前 Spring Boot 中默认支持的连接池有 dbcp,dbcp2, tomcat, hikari 三种连接池 由于 Druid 暂时不在 Spring Bootz 中的直接支持, 故需要进行配置信息的定制
- import com.alibaba.druid.pool.DruidDataSource;
- import com.alibaba.druid.support.http.StatViewServlet;
- import com.alibaba.druid.support.http.WebStatFilter;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.boot.web.servlet.FilterRegistrationBean;
- import org.springframework.boot.web.servlet.ServletRegistrationBean;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.Primary;
- import javax.sql.DataSource;import java.sql.SQLException;
- @Configuration
- public class DruidConfiguration {
- @Value("${spring.datasource.url}")
- private String dbUrl;
- @Value("${spring.datasource.username}")
- private String username;
- @Value("${spring.datasource.password}")
- private String password;
- @Value("${spring.datasource.driver-class-name}")
- private String driverClassName;
- @Value("${spring.datasource.initialSize}")
- private int initialSize;
- @Value("${spring.datasource.minIdle}")
- private int minIdle;
- @Value("${spring.datasource.maxActive}")
- private int maxActive;
- @Value("${spring.datasource.maxWait}")
- private int maxWait;
- @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
- private int timeBetweenEvictionRunsMillis;
- @Value("${spring.datasource.minEvictableIdleTimeMillis}")
- private int minEvictableIdleTimeMillis;
- @Value("${spring.datasource.validationQuery}")
- private String validationQuery;
- @Value("${spring.datasource.testWhileIdle}")
- private boolean testWhileIdle;
- @Value("${spring.datasource.testOnBorrow}")
- private boolean testOnBorrow;
- @Value("${spring.datasource.testOnReturn}")
- private boolean testOnReturn;
- @Value("${spring.datasource.poolPreparedStatements}")
- private boolean poolPreparedStatements;
- @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")
- private int maxPoolPreparedStatementPerConnectionSize;
- @Value("${spring.datasource.filters}")
- private String filters;
- @Value("{spring.datasource.connectionProperties}")
- private String connectionProperties;
- @Bean // 声明其为 Bean 实例
- @Primary // 在同样的 DataSource 中, 首先使用被标注的 DataSource
- public DataSource dataSource(){
- DruidDataSource datasource = new DruidDataSource();
- datasource.setUrl(this.dbUrl);
- datasource.setUsername(username);
- datasource.setPassword(password);
- datasource.setDriverClassName(driverClassName);
- //configuration
- 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);
- try {
- datasource.setFilters(filters);
- } catch (SQLException e) {
- System.err.println("druid configuration initialization filter:"+ e);
- }
- datasource.setConnectionProperties(connectionProperties);
- return datasource;
- }
- @Bean
- public ServletRegistrationBean statViewServle(){
- ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
- // IP 白名单
- servletRegistrationBean.addInitParameter("allow","192.168.1.218,127.0.0.1");
- // IP 黑名单 (共同存在时, deny 优先于 allow)
- servletRegistrationBean.addInitParameter("deny","192.168.1.100");
- // 控制台管理用户
- servletRegistrationBean.addInitParameter("loginUsername","druid");
- servletRegistrationBean.addInitParameter("loginPassword","761341");
- // 是否能够重置数据
- servletRegistrationBean.addInitParameter("resetEnable","false");
- return servletRegistrationBean;
- }
- @Bean
- public FilterRegistrationBean statFilter(){
- FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
- // 添加过滤规则
- filterRegistrationBean.addUrlPatterns("/*");
- // 忽略过滤的格式
- filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.CSS,*.ico,/druid/*");
- return filterRegistrationBean;
- }
- }
4 浏览器输入 http://localhost:8081/druid/index.html
来源: http://www.phperz.com/article/18/0312/357383.html