/**
* Company
* Copyright (C) 2014-2017 All Rights Reserved.
*/
package com.bootcwenao.esserver.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
import java.sql.SQLException;
/**
* @author cwenao
* @version $Id DataConfig.java, v 0.1 2017-01-24 17:43 cwenao Exp $$
*/
@Configuration
@EnableTransactionManagement
public class DataConfig {
Logger logger = LoggerFactory.getLogger(DataConfig.class);
@Bean
public ServletRegistrationBean druidServlet() {
return new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
}
@Bean(name = "dataSource",initMethod = "init", destroyMethod = "close")
public DataSource druidDataSource(@Value("${druid.datasource.driverClassName}") String driver,
@Value("${druid.datasource.url}") String url, @Value("${druid.datasource.username}") String username,
@Value("${druid.datasource.password}") String password,
@Value("${druid.datasource.initialSize}") Integer initialSize,
@Value("${druid.datasource.minIdle}") Integer minIdle,
@Value("${druid.datasource.maxActive}") Integer maxActive) {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(driver);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
druidDataSource.setValidationQuery("SELECT * FROM DUAL");
druidDataSource.setPoolPreparedStatements(false);
try {
druidDataSource.setFilters("stat");
} catch (SQLException e1) {
logger.error("setFilters error", e1);
}
try {
druidDataSource.setFilters("stat, wall");
} catch (SQLException e) {
e.printStackTrace();
}
return druidDataSource;
}
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer bean = new MapperScannerConfigurer();
bean.setBasePackage("com.bootcwenao.esserver.mapper");
return bean;
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}