From 6fbb76e1f820f70007886e3344f9948c0d6c8f0f Mon Sep 17 00:00:00 2001 From: wentao Date: Sat, 4 Aug 2018 23:07:53 +0800 Subject: [PATCH 1/4] =?UTF-8?q?add:=20=E6=96=B0=E5=A2=9E=E5=A4=9A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boot/starter/nutz/dao/NutDaoStarter.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java b/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java index 9d91578b..8a2e6a9b 100644 --- a/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java +++ b/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java @@ -5,6 +5,7 @@ import java.util.List; import javax.sql.DataSource; +import com.alibaba.druid.pool.DruidDataSource; import org.nutz.boot.annotation.PropDoc; import org.nutz.boot.starter.jdbc.DataSourceStarter; import org.nutz.dao.SqlManager; @@ -182,9 +183,29 @@ public class NutDaoStarter { dao.setRunner(runner); } } + injectManyDao(); return dao; } + private void injectManyDao() { + if(conf.containsKey("jdbc.many.names")) { + String names = conf.get("jdbc.many.names"); + for(String name : names.split(",")) { + String prefix_name = "jdbc.many." + name + "."; + DataSource manyDataSource = conf.make(DruidDataSource.class, prefix_name); + NutDao nutDao = new NutDao(); + nutDao.setDataSource(manyDataSource); + + String slave_prefix = prefix_name + "slave."; + DataSource slaveDataSource = DataSourceStarter.getSlaveDataSource(ioc, conf, slave_prefix); + NutDaoRunner runner = new NutDaoRunner(); + runner.setSlaveDataSource(slaveDataSource); + nutDao.setRunner(runner); + ioc.addBean(name+"Dao", nutDao); + } + } + } + /** * 返回值不能是CacheManager,因为要考虑没有加ehcache的情况 */ -- Gitee From 6349bee3838312cd7d36f506298bd669d1fab6cf Mon Sep 17 00:00:00 2001 From: wentao Date: Sun, 5 Aug 2018 11:36:17 +0800 Subject: [PATCH 2/4] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0=E5=A4=9A?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=B3=A8=E5=85=A5=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E4=B8=BA=E8=87=AA=E5=8A=A8=E6=89=AB=E6=8F=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boot/starter/nutz/dao/NutDaoStarter.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java b/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java index 8a2e6a9b..cdefeb9a 100644 --- a/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java +++ b/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java @@ -2,6 +2,8 @@ package org.nutz.boot.starter.nutz.dao; import java.util.ArrayList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.sql.DataSource; @@ -18,6 +20,7 @@ import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.Lang; import org.nutz.lang.Strings; +import org.nutz.lang.util.Regex; import org.nutz.log.Log; import org.nutz.log.Logs; import org.nutz.plugins.cache.dao.DaoCacheInterceptor; @@ -188,20 +191,26 @@ public class NutDaoStarter { } private void injectManyDao() { - if(conf.containsKey("jdbc.many.names")) { - String names = conf.get("jdbc.many.names"); - for(String name : names.split(",")) { + // 正则匹配多数据库url + String regex = "jdbc\\.many\\.(\\w*)\\.url"; + for (String key : conf.getKeys()) { + Pattern pattern = Regex.getPattern(regex); + Matcher match = pattern.matcher(key); + if(match.find()) { + // 获取数据库名称 + String name = match.group(1); String prefix_name = "jdbc.many." + name + "."; DataSource manyDataSource = conf.make(DruidDataSource.class, prefix_name); NutDao nutDao = new NutDao(); nutDao.setDataSource(manyDataSource); - + // 处理对应的从库 String slave_prefix = prefix_name + "slave."; DataSource slaveDataSource = DataSourceStarter.getSlaveDataSource(ioc, conf, slave_prefix); NutDaoRunner runner = new NutDaoRunner(); runner.setSlaveDataSource(slaveDataSource); nutDao.setRunner(runner); - ioc.addBean(name+"Dao", nutDao); + // 加入到ioc对象 + ioc.addBean(name + "Dao", nutDao); } } } -- Gitee From 657869d3207d89b357084c09177cd5431506c9b5 Mon Sep 17 00:00:00 2001 From: wentao Date: Sun, 5 Aug 2018 22:07:31 +0800 Subject: [PATCH 3/4] =?UTF-8?q?update:=20=E6=9B=B4=E6=96=B0DataSource?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java b/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java index cdefeb9a..b395927d 100644 --- a/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java +++ b/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java @@ -200,7 +200,7 @@ public class NutDaoStarter { // 获取数据库名称 String name = match.group(1); String prefix_name = "jdbc.many." + name + "."; - DataSource manyDataSource = conf.make(DruidDataSource.class, prefix_name); + DataSource manyDataSource = DataSourceStarter.createDataSource(ioc, conf, prefix_name); NutDao nutDao = new NutDao(); nutDao.setDataSource(manyDataSource); // 处理对应的从库 -- Gitee From a2e54603ae7c7c7bfdca2dd1f3f810e08c8bc5d7 Mon Sep 17 00:00:00 2001 From: wentao Date: Sun, 5 Aug 2018 22:11:33 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BB=8E=E5=BA=93?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E5=8F=AF=E8=83=BD=E5=BC=82=E5=B8=B8=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nutz/boot/starter/nutz/dao/NutDaoStarter.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java b/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java index b395927d..5b0d00a0 100644 --- a/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java +++ b/nutzboot-starter/nutzboot-starter-nutz-dao/src/main/java/org/nutz/boot/starter/nutz/dao/NutDaoStarter.java @@ -206,9 +206,11 @@ public class NutDaoStarter { // 处理对应的从库 String slave_prefix = prefix_name + "slave."; DataSource slaveDataSource = DataSourceStarter.getSlaveDataSource(ioc, conf, slave_prefix); - NutDaoRunner runner = new NutDaoRunner(); - runner.setSlaveDataSource(slaveDataSource); - nutDao.setRunner(runner); + if(slaveDataSource != null) { + NutDaoRunner runner = new NutDaoRunner(); + runner.setSlaveDataSource(slaveDataSource); + nutDao.setRunner(runner); + } // 加入到ioc对象 ioc.addBean(name + "Dao", nutDao); } -- Gitee