Druid阅读(一)环境准备

目录

1 下载源代码

2 初识Druid

2.1 查看github的文档

2.2 认识代码结构

3 搭建Druid示例工程

3.1 快速搭建一个spring-boot工程

3.2 集成Druid和Mybatis


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的示例工程就搭建成功了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值