diff --git a/common/src/main/java/com/micro/fast/common/config/DataSourceConfig.java b/common/src/main/java/com/micro/fast/common/config/DataSourceConfig.java index 29a8649..56b6f68 100644 --- a/common/src/main/java/com/micro/fast/common/config/DataSourceConfig.java +++ b/common/src/main/java/com/micro/fast/common/config/DataSourceConfig.java @@ -4,6 +4,9 @@ import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import com.alibaba.druid.support.spring.stat.DruidStatInterceptor; +import com.micro.fast.common.config.param.DruidParamConfig; +import com.micro.fast.common.config.param.JdbcConnectionParamConfig; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator; @@ -16,6 +19,7 @@ import org.springframework.context.annotation.Primary; import javax.sql.DataSource; import java.sql.SQLException; +import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -33,7 +37,10 @@ public class DataSourceConfig { private static final Logger logger = LoggerFactory.getLogger(DataSourceConfig.class); @Autowired - private JdbcConnectionConfig jdbcConnectionConfig; + private JdbcConnectionParamConfig jdbcConnectionParamConfig; + + @Autowired + private DruidParamConfig druidParamConfig; /** * druid的servlet的配置 @@ -42,23 +49,37 @@ public class DataSourceConfig { @Bean public ServletRegistrationBean servletRegistrationBean(){ ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(); - //注册servlet + //1.注册servlet servletRegistrationBean.setServlet(new StatViewServlet()); - //设置servlet初始化的参数 + //2.设置servlet初始化的参数,如果传入了参数默认的配置就不会生效 Map initParams = new HashMap<>(); - //设置登录密码 - initParams.put("loginUsername","root"); - initParams.put("loginPassword","studyj2e"); - //设置能否重置 - initParams.put("resetEnable","false"); - //deny优先于allow - initParams.put("allow","127.0.0.1"); - initParams.put("deny","213.122.232.233"); + ArrayList servletInitParams = druidParamConfig.getServletInitParams(); + if (servletInitParams!=null&&!servletInitParams.isEmpty()){ + for (String param: servletInitParams) { + String[] keyValue = param.split(":"); + initParams.put(keyValue[0],keyValue[1]); + } + }else{ + //设置登录密码 + initParams.put("loginUsername","micro"); + initParams.put("loginPassword","fast"); + //设置能否重置 + initParams.put("resetEnable","false"); + //deny优先于allow + initParams.put("allow","127.0.0.1"); + //initParams.put("deny","213.122.232.233"); + } servletRegistrationBean.setInitParameters(initParams); - //设置servlet的地址 - servletRegistrationBean.addUrlMappings("/druid/*"); + //3.设置访问druid的servlet的地址 + String servletUrl = druidParamConfig.getServletUrl(); + if (servletUrl !=null){ + servletRegistrationBean.addUrlMappings(servletUrl); + }else { + servletRegistrationBean.addUrlMappings("/druid/*"); + } + return servletRegistrationBean; } @@ -96,8 +117,11 @@ public class DataSourceConfig { public BeanNameAutoProxyCreator beanNameAutoProxyCreator(){ BeanNameAutoProxyCreator beanNameAutoProxyCreator = new BeanNameAutoProxyCreator(); beanNameAutoProxyCreator.setProxyTargetClass(true); - //设置要监控的bean的id - beanNameAutoProxyCreator.setBeanNames("userController"); + //设置要监控的bean的id,多个请使用逗号分割 + String beanNames = druidParamConfig.getBeanNames(); + if (StringUtils.isNotEmpty(beanNames)){ + beanNameAutoProxyCreator.setBeanNames(beanNames); + } //要使用的拦截器 beanNameAutoProxyCreator.setInterceptorNames("druid-stat-interceptor"); return beanNameAutoProxyCreator; @@ -108,17 +132,47 @@ public class DataSourceConfig { public DataSource druidDataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); //数据库连接的相关配置 - druidDataSource.setUsername(jdbcConnectionConfig.getUsername()); - druidDataSource.setPassword(jdbcConnectionConfig.getPassword()); - druidDataSource.setUrl(jdbcConnectionConfig.getUrl()); - druidDataSource.setDriverClassName(jdbcConnectionConfig.getDriverClass()); + druidDataSource.setUsername(jdbcConnectionParamConfig.getUsername()); + druidDataSource.setPassword(jdbcConnectionParamConfig.getPassword()); + druidDataSource.setUrl(jdbcConnectionParamConfig.getUrl()); + druidDataSource.setDriverClassName(jdbcConnectionParamConfig.getDriverClass()); //连接池的具体配置 - druidDataSource.setDefaultAutoCommit(true); - druidDataSource.setInitialSize(20); - druidDataSource.setMaxActive(50); - druidDataSource.setMinIdle(10); - druidDataSource.setMaxWait(10); - druidDataSource.setMinEvictableIdleTimeMillis(3600000); + if (druidParamConfig.getDefaultAutoCommit()!=null){ + druidDataSource.setDefaultAutoCommit(druidParamConfig.getDefaultAutoCommit()); + }else{ + druidDataSource.setDefaultAutoCommit(true); + } + + if (druidParamConfig.getInitialSize()!=null){ + druidDataSource.setInitialSize(druidParamConfig.getInitialSize()); + }else { + druidDataSource.setInitialSize(20); + } + + if(druidParamConfig.getMaxActive()!=null){ + druidDataSource.setMaxActive(druidParamConfig.getMaxActive()); + }else{ + druidDataSource.setMaxActive(50); + } + + if(druidParamConfig.getMinIdle()!=null){ + druidDataSource.setMinIdle(druidParamConfig.getMinIdle()); + }else{ + druidDataSource.setMinIdle(10); + } + + if(druidParamConfig.getMaxWait()!=null){ + druidDataSource.setMaxWait(druidParamConfig.getMaxWait()); + }else{ + druidDataSource.setMaxWait(1000); + } + + if(druidParamConfig.getMinEvictableIdleTimeMillis()!=null){ + druidDataSource.setMinEvictableIdleTimeMillis(druidParamConfig.getMinEvictableIdleTimeMillis()); + }else{ + druidDataSource.setMinEvictableIdleTimeMillis(3600000); + } + try { druidDataSource.setFilters("stat,wall"); } catch (SQLException e) { diff --git a/common/src/main/java/com/micro/fast/common/config/DruidConfig.java b/common/src/main/java/com/micro/fast/common/config/DruidConfig.java deleted file mode 100644 index 7028fb6..0000000 --- a/common/src/main/java/com/micro/fast/common/config/DruidConfig.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.micro.fast.common.config; - -import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -@Configuration -@ConfigurationProperties -@AutoConfigureBefore(com.micro.fast.common.config.DataSourceConfig.class) -public class DruidConfig { -} diff --git a/common/src/main/java/com/micro/fast/common/config/SqlSessionFactoryConfig.java b/common/src/main/java/com/micro/fast/common/config/SqlSessionFactoryConfig.java index 4882bfc..660a444 100644 --- a/common/src/main/java/com/micro/fast/common/config/SqlSessionFactoryConfig.java +++ b/common/src/main/java/com/micro/fast/common/config/SqlSessionFactoryConfig.java @@ -1,6 +1,7 @@ package com.micro.fast.common.config; import com.github.pagehelper.PageHelper; +import com.micro.fast.common.config.param.MybatisParamConfig; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; @@ -17,6 +18,7 @@ import org.springframework.transaction.annotation.TransactionManagementConfigure import javax.sql.DataSource; import java.io.IOException; +import java.util.ArrayList; import java.util.Properties; /** @@ -33,6 +35,8 @@ import java.util.Properties; public class SqlSessionFactoryConfig implements TransactionManagementConfigurer{ @Autowired private DataSource dataSource; + @Autowired + private MybatisParamConfig mybatisParamConfig; @Bean(name = "sqlSessionFactory") @Primary @@ -41,25 +45,39 @@ public class SqlSessionFactoryConfig implements TransactionManagementConfigurer{ //注入数据源 sqlSessionFactoryBean.setDataSource(dataSource); //设置实体类所在的位置 - sqlSessionFactoryBean.setTypeAliasesPackage("com.micro.fast.upms.pojo"); + sqlSessionFactoryBean.setTypeAliasesPackage(mybatisParamConfig.getTypeAliasesPackage()); + //sqlSessionFactoryBean.setTypeAliasesPackage("com.micro.fast.upms.pojo"); //设置mapper映射文件的位置 ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); try { sqlSessionFactoryBean.setMapperLocations( - resolver.getResources("classpath:/mappers/*.xml")); + resolver.getResources(mybatisParamConfig.getMappers())); + //resolver.getResources("classpath:/mappers/*.xml")); } catch (IOException e) { e.printStackTrace(); } //设置分页插件 PageHelper pageHelper = new PageHelper(); Properties properties = new Properties(); - properties.setProperty("dialect","mysql"); + ArrayList pageHelperProperties = mybatisParamConfig.getPageHelperProperties(); + if (pageHelperProperties!=null&&!pageHelperProperties.isEmpty()){ + for (String param : + pageHelperProperties) { + String[] keyValue = param.split(":"); + properties.setProperty(keyValue[0],keyValue[1]); + } + }else{ + properties.setProperty("dialect","mysql"); + } pageHelper.setProperties(properties); sqlSessionFactoryBean.setPlugins(new Interceptor[]{pageHelper}); //设置详细的配置 org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration(); + //开启下划线转驼峰命名 configuration.setMapUnderscoreToCamelCase(true); + //开启列别名 configuration.setUseColumnLabel(true); + //使用自动的主键生成 configuration.setUseGeneratedKeys(true); //将详细配置放入到sqlSessionFactoryBean中 sqlSessionFactoryBean.setConfiguration(configuration); @@ -73,7 +91,6 @@ public class SqlSessionFactoryConfig implements TransactionManagementConfigurer{ } - /** * 向事务管理器中注入数据源,由spring来进行事务管理 */ diff --git a/common/src/main/java/com/micro/fast/common/config/param/DruidParamConfig.java b/common/src/main/java/com/micro/fast/common/config/param/DruidParamConfig.java new file mode 100644 index 0000000..ff2030e --- /dev/null +++ b/common/src/main/java/com/micro/fast/common/config/param/DruidParamConfig.java @@ -0,0 +1,120 @@ +package com.micro.fast.common.config.param; + +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import java.util.ArrayList; + +/** + * druid数据库连接池的相关配置参数 + * create by lishouyu 2017/09/09 + * email 18332763730@163.com + * + * last edit lishouyu 2017/09/09 + * email 18332763730@163.com + * + */ +@Configuration +@AutoConfigureBefore(com.micro.fast.common.config.DataSourceConfig.class) +@ConfigurationProperties(prefix = "druid") +public class DruidParamConfig { + //druid数据连接池的servlet的初始化参数 + private ArrayList servletInitParams; + + //druid数据库连接池的访问路径 + private String servletUrl; + + //druid要监控的bean的名字,多个使用逗号分割 + private String beanNames; + + //事务是否自动提交 + private Boolean defaultAutoCommit; + + //连接池的初始化大小 + private Integer initialSize; + + //连接池的最大的数量 + private Integer maxActive; + + //连接池的最小空闲数量 + private Integer minIdle; + + //当连接池中连接已经用完了,等待建立一个新连接的最大毫秒数 + private Integer maxWait; + + //到达多长时间释放连接池 + private Integer minEvictableIdleTimeMillis; + + public ArrayList getServletInitParams() { + return servletInitParams; + } + + public void setServletInitParams(ArrayList servletInitParams) { + this.servletInitParams = servletInitParams; + } + + public String getServletUrl() { + return servletUrl; + } + + public void setServletUrl(String servletUrl) { + this.servletUrl = servletUrl; + } + + public String getBeanNames() { + return beanNames; + } + + public void setBeanNames(String beanNames) { + this.beanNames = beanNames; + } + + public Boolean getDefaultAutoCommit() { + return defaultAutoCommit; + } + + public void setDefaultAutoCommit(Boolean defaultAutoCommit) { + this.defaultAutoCommit = defaultAutoCommit; + } + + public Integer getInitialSize() { + return initialSize; + } + + public void setInitialSize(Integer initialSize) { + this.initialSize = initialSize; + } + + public Integer getMaxActive() { + return maxActive; + } + + public void setMaxActive(Integer maxActive) { + this.maxActive = maxActive; + } + + public Integer getMinIdle() { + return minIdle; + } + + public void setMinIdle(Integer minIdle) { + this.minIdle = minIdle; + } + + public Integer getMaxWait() { + return maxWait; + } + + public void setMaxWait(Integer maxWait) { + this.maxWait = maxWait; + } + + public Integer getMinEvictableIdleTimeMillis() { + return minEvictableIdleTimeMillis; + } + + public void setMinEvictableIdleTimeMillis(Integer minEvictableIdleTimeMillis) { + this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; + } +} diff --git a/common/src/main/java/com/micro/fast/common/config/JdbcConnectionConfig.java b/common/src/main/java/com/micro/fast/common/config/param/JdbcConnectionParamConfig.java similarity index 94% rename from common/src/main/java/com/micro/fast/common/config/JdbcConnectionConfig.java rename to common/src/main/java/com/micro/fast/common/config/param/JdbcConnectionParamConfig.java index 671d0f7..a879607 100644 --- a/common/src/main/java/com/micro/fast/common/config/JdbcConnectionConfig.java +++ b/common/src/main/java/com/micro/fast/common/config/param/JdbcConnectionParamConfig.java @@ -1,4 +1,4 @@ -package com.micro.fast.common.config; +package com.micro.fast.common.config.param; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; @AutoConfigureBefore(com.micro.fast.common.config.DataSourceConfig.class) @ConfigurationProperties(prefix = "jdbc") @Validated -public class JdbcConnectionConfig { +public class JdbcConnectionParamConfig { @NotNull private String username; @NotNull diff --git a/common/src/main/java/com/micro/fast/common/config/param/MybatisParamConfig.java b/common/src/main/java/com/micro/fast/common/config/param/MybatisParamConfig.java new file mode 100644 index 0000000..0954cb0 --- /dev/null +++ b/common/src/main/java/com/micro/fast/common/config/param/MybatisParamConfig.java @@ -0,0 +1,48 @@ +package com.micro.fast.common.config.param; + +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; +import java.util.ArrayList; + +@Configuration +@AutoConfigureBefore(com.micro.fast.common.config.SqlSessionFactoryConfig.class) +@ConfigurationProperties(prefix = "mybatis") +@Validated +public class MybatisParamConfig { + //pojo所在的包 + @NotNull + private String typeAliasesPackage; + //映射文件所在的文件路径 + @NotNull + private String mappers; + //分页插件的参数设置 + private ArrayList pageHelperProperties; + + public String getTypeAliasesPackage() { + return typeAliasesPackage; + } + + public void setTypeAliasesPackage(String typeAliasesPackage) { + this.typeAliasesPackage = typeAliasesPackage; + } + + public String getMappers() { + return mappers; + } + + public void setMappers(String mappers) { + this.mappers = mappers; + } + + public ArrayList getPageHelperProperties() { + return pageHelperProperties; + } + + public void setPageHelperProperties(ArrayList pageHelperProperties) { + this.pageHelperProperties = pageHelperProperties; + } +}