SpringBoot (四)druid及beetlSQL配置

匿名 (未验证) 提交于 2019-12-03 00:19:01

上篇主要讲述了SpringBoot Maven搭建层层之间的关系,本篇则主要针对beetlSQL,druid数据源来整合一下。
对于beetlSQL的好处beetlSQL基本使用中当中已经讲述,这里则不再多提。
再beetlSQL的配合使用中,我们使用了alibaba的Druid数据库连接池,Druid这个新生代的后期勃发再此不多说,可以自行学习。配置Druid很简单:
1、添加Maven依赖(包含mysql和beetlSQL的Maven依赖也一并加上)

            <!--mysql-->             <dependency>                 <groupId>mysql</groupId>                 <artifactId>mysql-connector-java</artifactId>                 <version>5.1.45</version>             </dependency>             <!--阿里巴巴Druid数据源-->             <dependency>                 <groupId>com.alibaba</groupId>                 <artifactId>druid</artifactId>                 <version>1.1.6</version>             </dependency>             <!--beetlSQL-->             <dependency>                 <groupId>com.ibeetl</groupId>                 <artifactId>beetlsql</artifactId>                 <version>2.10.19</version>             </dependency>

2、资源配置文件
(2.1资源配置)

#database config datasource.exam.url=jdbc:mysql://192.168.XX.XX:3001/user?useUnicode=true&characterEncoding=utf-8 datasource.exam.username = XXX datasource.exam.password = XXXX  datasource.maxActive=10 datasource.initialSize=1 datasource.maxWaitMillis=15000 datasource.minIdle=5 datasource.timeBetweenEvictionRunsMillis=60000 datasource.minEvictableIdleTimeMillis=300000 datasource.validationQuery=SELECT 'x' datasource.testWhileIdle=true datasource.testOnBorrow=false datasource.testOnReturn=false

(2.2资源配置详解)

配置 说明
datasource.maxActive 最大连接池数量
datasource.minIdle 最小连接池数量
datasource.initialSize 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
datasource.maxWaitMillis 获取连接时最大等待时间,单位毫秒
datasource.timeBetweenEvictionRunsMillis 1) Destroy线程会检测连接的间隔时间 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
datasource.validationQuery 用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、 testWhileIdle都不会起作用
datasource.testWhileIdle 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis, 执行validationQuery检测连接是否有效
datasource.testOnBorrow 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
datasource.testOnReturn 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能

3、创建工厂类读取资源文件

@Configuration @PropertySource({"classpath:dev/application-db.properties"}) public class DataSourceConfig {       @Value("${datasource.exam.url}")     private String examUrl;     @Value("${datasource.exam.username}")     private String examUserName;     @Value("${datasource.exam.password}")     private String examPassword;      @Value("${datasource.maxActive}")     private int maxActive;     @Value("${datasource.initialSize}")     private int initialSize;     @Value("${datasource.maxWaitMillis}")     private long maxWaitMillis;     @Value("${datasource.minIdle}")     private int minIdle;     @Value("${datasource.timeBetweenEvictionRunsMillis}")     private long timeBetweenEvictionRunsMillis;     @Value("${datasource.minEvictableIdleTimeMillis}")     private long minEvictableIdleTimeMillis;     @Value("${datasource.validationQuery}")     private String validationQuery;     @Value("${datasource.testWhileIdle}")     private boolean testWhileIdle;     @Value("${datasource.testOnBorrow}")     private boolean testOnBorrow;     @Value("${datasource.testOnReturn}")     private boolean testOnReturn;        @Bean(value = "examDB")     @Primary     public DataSource getExamDataSource(){         DruidDataSource druidDataSource=new DruidDataSource();         druidDataSource.setName("examDB");         druidDataSource.setUrl(examUrl);         druidDataSource.setUsername(examUserName);         druidDataSource.setPassword(examPassword);          //druidDataSource配置         druidDataSource.setMaxActive(maxActive);         druidDataSource.setInitialSize(initialSize);         druidDataSource.setMaxWait(maxWaitMillis);         druidDataSource.setMinIdle(minIdle);         druidDataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);         druidDataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);         druidDataSource.setValidationQuery(validationQuery);         druidDataSource.setTestWhileIdle(testWhileIdle);         druidDataSource.setTestOnBorrow(testOnBorrow);         druidDataSource.setTestOnReturn(testOnReturn);         return druidDataSource;      } }

三步druid则配置完工了,Dao层我们使用的简单方便快捷,且优点多多的beetlSQL来完成,Maven依赖上述已经配置好,由于SpringBoot没有对beetlSQL的快速启动装配,所以我们得手动导入相关的bean,包括数据源,扫描宝,事务管理器等必须的。

@Configuration public class SQLManagerConfig {      @Bean(name = "examSqlManager")     @Primary     public SqlManagerFactoryBean getSqlManagerFactoryBean(@Qualifier("examDB")DataSource master){         SqlManagerFactoryBean factoryBean=new SqlManagerFactoryBean();         BeetlSqlDataSource source=new BeetlSqlDataSource();         source.setMasterSource(master);         factoryBean.setCs(source);         factoryBean.setDbStyle(new MySqlStyle());         //开启驼峰         factoryBean.setNc(new UnderlinedNameConversion());         //sql文件路径         factoryBean.setSqlLoader(new ClasspathLoader("/sql"));         return factoryBean;     }      /**      * 配置包扫描      * @return      */     @Bean(name = "examSqlScannerConfigurer")     public BeetlSqlScannerConfigurer getBeetlSqlScannerConfigurer() {         BeetlSqlScannerConfigurer conf = new BeetlSqlScannerConfigurer();         conf.setBasePackage("com.exam.api.dao");         conf.setDaoSuffix("Dao");         conf.setSqlManagerFactoryBeanName("examSqlManager");         return conf;     } }

到此为止,从web层到dao层的一个基本启动流程就搭建完工了。下篇则主要讲述启动过程中的一些问题以及流程实践操作。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!