Springboot整合druid的具体过程
来源:互联网 发布:轩墨宝宝 知乎 编辑:程序博客网 时间:2024/05/21 21:37
网上的教程要么不全,要么有点坑,所以成功了之后留作纪念,仅供自己参考,水平有限,不足之处多多包涵。
1.建立一个springboot项目的过程网上都有,自己配置好数据库连接什么的,就不多叙述了。
2.application.properties里面配置上相关参数:(为什么不用yml文件,yml里面有的属性设置不了,暂时不想深究)具体参数如下:参数的具体意思去看看druid的项目,注意添加druid的pom依赖。
spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.driverClassName=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://192.168.1.143:3306/****?useSSL=false&useUnicode=true&characterEncoding=UTF-8spring.datasource.username=****spring.datasource.password=****spring.datasource.initialSize=5spring.datasource.minIdle=5spring.datasource.maxActive=20spring.datasource.maxWait=60000spring.datasource.timeBetweenEvictionRunsMillis=60000spring.datasource.minEvictableIdleTimeMillis=300000spring.datasource.validationQuery=SELECT 1 FROM DUALspring.datasource.testWhileIdle=truespring.datasource.testOnBorrow=falsespring.datasource.testOnReturn=falsespring.datasource.poolPreparedStatements=truespring.datasource.maxPoolPreparedStatementPerConnectionSize=20spring.datasource.filters=stat,wall,log4jspring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000#spring.datasource.useGlobalDataSourceStat=true
3.重点来了:网上有的教程这一步是没有的,因为springboot并不支持druid,所以要用@config去配置信息,并用@primary去用生成的druidDataSource去替换原有的datasource,保证以我们想要配置的druid数据源去运行;具体代码如下
@Configurationpublic class DruidDBConfig { private Logger logger = LoggerFactory.getLogger(DruidDBConfig.class); @Value("${spring.datasource.url}") private String dbUrl; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @Value("${spring.datasource.driverClassName}") 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) { logger.error("druid configuration initialization filter", e); } datasource.setConnectionProperties(connectionProperties); return datasource; }}
其实换用下面的配置配置datasource也可以:
@Configurationpublic class DruidDBConfig { private Logger logger = LoggerFactory.getLogger(DruidDBConfig.class); @Bean @Primary @ConfigurationProperties(prefix = "spring.datasource") public DataSource druidDataSource() { try { return new DruidDataSource(); } catch (Exception e) { logger.error("设置数据源为druid时出错:" + e.getMessage()); return null; } }}
然后就是配置Druid的statView的2个servlet(第一个是配置过滤器的,第一个是配置访问路径账号密码等一些设置) :
@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*", initParams={ @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源})}
需要注意@WebServle注解需要在比较高版本的servlet中使用( ServletRegistrationBean 和FilterRegistrationBean也是可以的),作用就是之前用druid配置的xml文件里面一样的作用。这里贴一下自己的servlet版本,不要用springboot自带的
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.0-b07</version> <scope>provided</scope> </dependency>
下面主要是配置druid的一些基本信息,比如账号密码,白名单之类的,自己去查参数配置好了
@WebServlet(urlPatterns = "/druid/*", initParams={// @WebInitParam(name="allow",value="192.168.16.110,127.0.0.1"),// IP白名单 (没有配置或者为空,则允许所有访问)// @WebInitParam(name="deny",value="192.168.16.111"),// IP黑名单 (存在共同时,deny优先于allow) @WebInitParam(name="loginUsername",value="root"),// 用户名 @WebInitParam(name="loginPassword",value="123456"),// 密码 @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能 })public class DruidStatViewServlet extends StatViewServlet {}
最后在springboot的启动函数上加上扫描配置
@MapperScan(basePackages = { “com.**.mapper” })
@ServletComponentScan
- Springboot整合druid的具体过程
- springBoot+druid+mybitis整合
- SpringBoot整合druid数据库连接池
- SpringBoot 整合Mybatis/Druid/Quartz
- SpringBoot用Druid整合MyBatis
- springboot整合druid数据库连接池
- springboot的druid监控
- springboot整合druid并开启监控
- SpringBoot项目整合Druid进行统计监控
- springboot和Druid整合(三)
- SpringBoot整合druid数据源及添加Druid监控页面
- springBoot(八)整合之整合阿里druid数据库连接池
- 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【三】【整合swagger2和druid】
- SpringBoot学习:整合MyBatis,使用Druid连接池
- Springboot整合Mybatis实现Druid多数据源
- Springboot整合Mybatis分页使用Druid监控SQL日志
- SpringBoot学习之整合SSM+pagehelper+druid+单元测试
- Springboot整合Swagger过程中遇到的坑
- java连接oracle12c
- 关于字符编码 GB2312,UTF-8,GBK,BIG5
- 【20170630】TensorFlow与python学习(2)-Mnist入门
- c语言之宏定义
- Pluraform Floating Park 嵌入场所
- Springboot整合druid的具体过程
- 子数组最大累加和+子矩阵的最大和+子数组累加和为给定值的最大子数组长度
- hdu5114 Collision (扩展欧几里德+思维)
- 100多个经典常用的PHP功能插件大全实例演示和下载
- Ignite 消息和事件
- lua table简单使用
- 4个数和为0
- 2010 成都Regional H 博弈,概率dp
- 白话讲MyIsam和InnoDB的区别