package com.ljnet.springboot.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
// 扫描 Mapper 接口并容器管理
@MapperScan(basePackages = MysqlConfig.PACKAGE,sqlSessionFactoryRef = "mysqlSqlSessionFactory")
public class MysqlConfig {
//hive dao 所在的包
public static final String PACKAGE="com.ljnet.springboot.dao.mysqldao";
//mapper 的xml文件 所在的包
private static final String MAPPER_LOCATION="classpath:mapper/mysql/*.xml";
@Value("${spring.datasource.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
//初始化数据库连接
@Bean(name="mysqlDatasource")
@Primary
public DataSource mysqlDatasource(){
DruidDataSource dataSource=new DruidDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
//数据源事务管理器
@Bean("mysqlDataSourceTransactionManager")
@Primary
public DataSourceTransactionManager mysqlDataSourceTransactionManager(){
return new DataSourceTransactionManager(mysqlDatasource());
}
//创建session
@Bean("mysqlSqlSessionFactory")
@Primary
public SqlSessionFactory mysqlsession(@Qualifier("mysqlDatasource") DataSource mysqldatasource) throws Exception {
final SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(mysqldatasource);
Resource[] resources=new PathMatchingResourcePatternResolver().getResources(MysqlConfig.MAPPER_LOCATION);
sqlSessionFactoryBean.setMapperLocations(resources);
return sqlSessionFactoryBean.getObject();
}
//druid 设置
@Bean
@Primary
public ServletRegistrationBean hiveStatViewServlet(){
ServletRegistrationBean registrationBean=new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
registrationBean.addInitParameter("allow","localhost"); //ip白名单(若为空则所有ip都可以访问)
registrationBean.addInitParameter("deny","");//黑名单
registrationBean.addInitParameter("loginUsername","admin"); //登录druid 监控web 的用户名
registrationBean.addInitParameter("loginPassword","admin");
registrationBean.addInitParameter("resetEnable","false");
return registrationBean;
}
@Bean
@Primary
public FilterRegistrationBean druidWebStatViewFilter() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean(new WebStatFilter());
registrationBean.addInitParameter("urlPatterns", "/*");
registrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*");
return registrationBean;
}
}
评论6
最新资源