first commit
This commit is contained in:
@ -19,16 +19,16 @@ import java.util.Map;
|
||||
*/
|
||||
@Configuration
|
||||
public class DynamicDataSourceConfig {
|
||||
|
||||
/**
|
||||
* 把DynamicDataSourceContext 纳入容器管理,其他地方使用DynamicDataSourceConfig 类可以直接从容器取对象,并调用freshDataSource方法
|
||||
*/
|
||||
@Bean
|
||||
@Primary
|
||||
public static DynamicDataSourceContext dataSource() {
|
||||
Map<Object, Object> targetDataSource = getDataSource();
|
||||
//把DynamicDataSourceContext纳入容器管理
|
||||
DynamicDataSourceContext dynamicDataSourceContext = new DynamicDataSourceContext();
|
||||
dynamicDataSourceContext.freshDataSource(targetDataSource);
|
||||
dynamicDataSourceContext.freshDataSource(getDataSource());
|
||||
return dynamicDataSourceContext;
|
||||
}
|
||||
|
||||
@ -38,7 +38,6 @@ public class DynamicDataSourceConfig {
|
||||
* @return
|
||||
*/
|
||||
public static Map<Object, Object> getDataSource() {
|
||||
|
||||
DynamicDataSource ds2 = new DynamicDataSource();
|
||||
ds2.setTenantCode("1");
|
||||
ds2.setDriver("com.mysql.cj.jdbc.Driver");
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
package com.qiaoba.common.database.filters;
|
||||
|
||||
import com.qiaoba.common.database.config.DynamicDataSourceContext;
|
||||
import com.qiaoba.common.database.properties.DefaultDataSourceProperties;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@ -20,11 +22,14 @@ import java.io.IOException;
|
||||
@Order(-10000)
|
||||
public class HandleTenantFilter implements Filter {
|
||||
|
||||
@Autowired
|
||||
private DefaultDataSourceProperties defaultDataSourceProperties;
|
||||
@Resource
|
||||
private DynamicDataSourceContext dynamicDataSourceContext;
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
||||
System.out.println(defaultDataSourceProperties);
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequest;
|
||||
String instanceId = request.getParameter("tenant");
|
||||
//设置当前租户对应的数据库
|
||||
|
||||
@ -0,0 +1,18 @@
|
||||
package com.qiaoba.common.database.properties;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Component
|
||||
@ConfigurationProperties(prefix = "qiaoba.datasource")
|
||||
@Data
|
||||
public class DefaultDataSourceProperties {
|
||||
|
||||
private MasterInfo master;
|
||||
|
||||
private List<SlaveInfo> slaves;
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
package com.qiaoba.common.database.properties;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class MasterInfo {
|
||||
private String driver;
|
||||
private String url;
|
||||
private String username;
|
||||
private String password;
|
||||
private PoolInfo pool;
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
package com.qiaoba.common.database.properties;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class PoolInfo {
|
||||
private Integer init;
|
||||
private Integer min;
|
||||
private Integer max;
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.qiaoba.common.database.properties;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SlaveInfo {
|
||||
private Boolean isUse = true;
|
||||
private String driver;
|
||||
private String url;
|
||||
private String username;
|
||||
private String password;
|
||||
private Integer weight = 1;
|
||||
private PoolInfo pool;
|
||||
}
|
||||
@ -0,0 +1,108 @@
|
||||
{
|
||||
"groups": [
|
||||
{
|
||||
"name": "qiaoba.datasource",
|
||||
"type": "com.qiaoba.common.database.properties.DefaultDataSourceProperties",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"name": "qiaoba.datasource.master",
|
||||
"type": "com.qiaoba.common.database.properties.MasterInfo",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.master.driver",
|
||||
"type": "java.lang.String",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.master.url",
|
||||
"type": "java.lang.String",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.master.username",
|
||||
"type": "java.lang.String",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.master.password",
|
||||
"type": "java.lang.String",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.master.pool",
|
||||
"type": "com.qiaoba.common.database.properties.PoolInfo",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.master.pool.init",
|
||||
"type": "java.lang.Integer",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.master.pool.min",
|
||||
"type": "java.lang.Integer",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.master.pool.max",
|
||||
"type": "java.lang.Integer",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.slaves",
|
||||
"type": "java.util.List<com.qiaoba.common.database.properties.SlaveInfo>",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.slaves.url",
|
||||
"type": "java.lang.String",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.slaves.username",
|
||||
"type": "java.lang.String",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.slaves.password",
|
||||
"type": "java.lang.String",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.slaves.weight",
|
||||
"type": "java.lang.String",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.slaves.is-use",
|
||||
"type": "java.lang.Boolean",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties",
|
||||
"defaultValue": true
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.slaves.pool",
|
||||
"type": "com.qiaoba.common.database.properties.PoolInfo",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.slaves.pool.init",
|
||||
"type": "java.lang.Integer",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.slaves.pool.min",
|
||||
"type": "java.lang.Integer",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"name": "qiaoba.datasource.slaves.pool.max",
|
||||
"type": "java.lang.Integer",
|
||||
"sourceType": "com.qiaoba.common.database.properties.DefaultDataSourceProperties"
|
||||
}
|
||||
],
|
||||
"hints": []
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
||||
com.qiaoba.common.database.config.DynamicDataSourceConfig,\
|
||||
com.qiaoba.common.database.properties.DefaultDataSourceProperties,\
|
||||
com.qiaoba.common.database.filters.HandleTenantFilter
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user