Druid 自定义拦截器

Druid FilterEventAdapter 的使用

Posted by lijian on March 13, 2019

文档地址

Druid 常见问题

自带拦截器

  • META-INF/druid-filter.properties 中配置

druid.filters.default=com.alibaba.druid.filter.stat.StatFilter
druid.filters.stat=com.alibaba.druid.filter.stat.StatFilter
druid.filters.mergeStat=com.alibaba.druid.filter.stat.MergeStatFilter
druid.filters.counter=com.alibaba.druid.filter.stat.StatFilter
druid.filters.encoding=com.alibaba.druid.filter.encoding.EncodingConvertFilter
druid.filters.log4j=com.alibaba.druid.filter.logging.Log4jFilter
druid.filters.log4j2=com.alibaba.druid.filter.logging.Log4j2Filter
druid.filters.slf4j=com.alibaba.druid.filter.logging.Slf4jLogFilter
druid.filters.commonlogging=com.alibaba.druid.filter.logging.CommonsLogFilter
druid.filters.commonLogging=com.alibaba.druid.filter.logging.CommonsLogFilter
druid.filters.wall=com.alibaba.druid.wall.WallFilter
druid.filters.config=com.alibaba.druid.filter.config.ConfigFilter

  • 使用自带的拦截器

<property name="filters" value="stat,log4j" />

自定义拦截器

  • 核心类 FilterEventAdapter ,该类对众多方法提供了钩子处理,我们可以重写对应的钩子从而实现自定义拦截器功能

  • 编写自定义拦截器

import com.alibaba.druid.filter.FilterChain;
import com.alibaba.druid.filter.FilterEventAdapter;
import com.alibaba.druid.proxy.jdbc.ConnectionProxy;

import java.util.Properties;

/**
 * @author lijian
 * @date 2019/3/13 下午4:26
 */
@Component
public class MyDruidInterceptor extends FilterEventAdapter {


    @Override
    public void connection_connectBefore(FilterChain chain, Properties info) {
        System.out.println("i am doing connection_connectBefore ");
    }

    @Override
    public void connection_connectAfter(ConnectionProxy connection) {
        System.out.println("i am doing connection_connectAfter ");
    }
}

  • 将自定义的拦截器添加到拦截器链