目录
1 下载源代码
访问Druid github地址:https://github.com/alibaba/druid,页面截图如下:
然后选中master分支,点击code->SSH或者HTTPS,复制链接git clone下载即可,页面截图如下:
下载成功后,打开命令行窗口,cd到下载好的Druid的目录下,执行mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true,截图如下:
会看到BUILD SUCCESS,即为编译成功
用IDEA File->Open打开Druid项目,页面截图如下:
导入到IDEA后的截图:
2 初识Druid
2.1 查看github的文档
https://github.com/alibaba/druid/wiki/%E9%A6%96%E9%A1%B5打开https://github.com/alibaba/druid/wiki/%E9%A6%96%E9%A1%B5,先查看下Druid的文档,对这个项目做个初始的了解,个人认为文档是认识一个新项目的最好的开始,页面截图如下:
从文档中我们扫个大概,可以看到Druid 是一个 JDBC 组件库,包含数据库连接池、SQL Parser 等组件。文档中介绍了贡献者、DBCP迁移、Druid Change Log、druid monitor设计等等,在这里就不一一罗列了,大家可打开文档地址去查看,对整体有个大概的了解。
2.2 认识代码结构
从最外层的代码目录结构,初步大胆猜想如下(先有个大概认识,后续深入细节追讨):
- doc为Druid的文档目录
- druid-admin为Web页面模块,因为Druid提供了页面的监控统计
- druid-spring-boot-starter为spring-boot的启动工程
- druid-wrapper可能为C3p0以及dbcp的包装处理模块
- lib为两个内置的openjdk的包
- src为Druid的核心处理模块
打开src后可查看到的目录结构如上截图所示,同样对每个目录做个大概的认识:
- filter为Druid提供的过滤器的功能模块
- mock说明提供了mock功能支持
- pool为Druid连接池实现的核心功能模块
- proxy为代理功能模块
- sql为sql解析器功能模块
- stat为监控模块
- support为提供第三方工具的支持模块
- util为工具包模块
- wall为防火墙功能模块
3 搭建Druid示例工程
3.1 快速搭建一个spring-boot工程
打开https://spring.io/,点开Learn-》Quickstart,然后 start.spring.io快速创建一个spring-boot示例工程,示例如下:
3.2 集成Druid和Mybatis
1、pom.xml添加以下依赖包
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.17</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- Spring Boot Mybatis 依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency>
2、application.properties添加配置如下:
#---------------------使用durid连接池 spring.datasource.url=jdbc:mysql://localhost:3306/shenyu?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver spring.datasource.initialSize=5 spring.datasource.minIdle=10 spring.datasource.maxActive=20 spring.datasource.maxWait=6000 spring.datasource.timeBetweenEvictionRunsMillis=2000 spring.datasource.minEvictableIdleTimeMillis=600000 spring.datasource.maxEvictableIdleTimeMillis=900000 spring.datasource.validationQuery=select 1 spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false spring.datasource.keepAlive=true spring.datasource.phyMaxUseCount=1000 spring.datasource.filters=stat spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
3、启动类添加@MapperScan("com.yrz.druid_demo.mapper")
@SpringBootApplication @MapperScan("com.yrz.druid_demo.mapper") public class DruidDemoApplication { public static void main(String[] args) { SpringApplication.run(DruidDemoApplication.class, args); } }
4、添加一个Mapper类
public interface DruidTestMapper { @Select("SELECT * FROM druid_test") List<DruidTest> getAll(); }
5、添加一个entity对象
public class DruidTest { private String key; private String value; public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } @Override public String toString() { return "DruidTest{" + "key='" + key + '\'' + ", value='" + value + '\'' + '}'; } }
6、配置Druid监控
@Configuration public class DruidConfig { //注册 Servlet 组件 @Bean public ServletRegistrationBean statViewServlet(){ ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); /*servletRegistrationBean.addInitParameter("allow", "192.168.1.3"); //白名单IP*/ servletRegistrationBean.addInitParameter("loginUsername", "admin"); servletRegistrationBean.addInitParameter("loginPassword", "123456"); return servletRegistrationBean; } // 注册 Filter 组件 @Bean public FilterRegistrationBean statFilter(){ FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); //验证所有请求 filterRegistrationBean.addUrlPatterns("/*"); //对 *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* 不进行验证 filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; } }
7、添加单元测试类测试
@SpringBootTest @RunWith(SpringRunner.class) class DruidDemoApplicationTests { @Autowired private DruidTestService druidTestService; @Test void contextLoads() { System.out.println(druidTestService.getAll().toString()); } }
8、整体工程结构截图如下:
9、运行结果如下:
到这里Druid的示例工程就搭建成功了。