整合smm框架的配置,实现参数可配置的热插拔式组件
This commit is contained in:
@@ -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<String,String> 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<String> 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) {
|
||||
|
||||
@@ -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 {
|
||||
}
|
||||
@@ -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<String> 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来进行事务管理
|
||||
*/
|
||||
|
||||
@@ -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<String> 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<String> getServletInitParams() {
|
||||
return servletInitParams;
|
||||
}
|
||||
|
||||
public void setServletInitParams(ArrayList<String> 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;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -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
|
||||
@@ -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<String> 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<String> getPageHelperProperties() {
|
||||
return pageHelperProperties;
|
||||
}
|
||||
|
||||
public void setPageHelperProperties(ArrayList<String> pageHelperProperties) {
|
||||
this.pageHelperProperties = pageHelperProperties;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user