Closed swtseaman closed 6 years ago
神州行,我看行。
哈哈,你是在oschina上给我点赞的蛋蛋吧
很少人用properties来配置ioc对象吧,而且有实现PropertiesIocLoader
能搞但没必要吧,一般就连接单个数据源, 更多的数据源, 可以通过 ioc js 或者@IocBean来声明
使用DaoUp来解决吗
@IocBean
public class MyBeans {
@Inject
PropertiesProxy conf;
@IocBean(name="aDao")
public Dao abcDao() {
return new NutDao(conf.make(DruidDataSource.class, "jdbcA."));
}
@IocBean(name="bDao")
public Dao abcDao() {
return new NutDao(conf.make(DruidDataSource.class, "jdbcB."));
}
@IocBean(name="cDao")
public Dao cDao() {
return new NutDao(conf.make(DruidDataSource.class, "jdbcC."));
}
}
这种写法确实方便,但不知道是否支持主从
NutDao本身就支持,看NutDaoStarter里面的逻辑
但是NutDao是org.nutz.dao.impl.NutDao里面的,跟NutDaoStarter能联系起来吗?
为啥不能联系起来?我的意思是去看看里面的逻辑
我看了
// 看看是不是需要注入从数据库
if (Lang.loadClassQuite("org.nutz.boot.starter.jdbc.DataSourceStarter") != null) {
DataSource slaveDataSource = DataSourceStarter.getSlaveDataSource(ioc, conf);
if (slaveDataSource != null) {
NutDaoRunner runner = new NutDaoRunner();
runner.setSlaveDataSource(slaveDataSource);
dao.setRunner(runner);
}
}
我的意思是你上面写的MyBeans里面是new出来的NutDao,会经过NutDaoStarter的处理吗? 而且NutDaoStarter里面的处理只处理一主一从,我想实现NutzBoot你最新支持的这种一主多从
^_^ 如果getSlaveDataSource也能传前缀,问题就解决了?
比如getSlaveDataSources返回一个DataSource数组,嘿嘿
@wendal 能否解说下,new NutDao的时候,NutDaoStarter是什么时候介入的
我debug先看看执行过程
@IocBean(name="bDao")
public Dao abcDao() {
NutDao dao = new NutDao(conf.make(DruidDataSource.class, "jdbcB."));
DataSource slave = DataSourceStarter.getSlaveDataSource(ioc, conf, "jdbcB.slave.");
if (slave != null) {
NutDaoRunner runner = new NutDaoRunner();
runner.setSlaveDataSource(slave);
dao.setRunner(slave);
}
return dao;
}
我的本意只是让你去看看NutDaoStarter的逻辑...
额,理解了,getSlaveDataSource已经实现了多从库加入,thanks
坐等快照更新,哈哈!
今天想了一个多数据源的事情,不知道是否可行 是看了现在的NB的一主多从想出来的,按照一个标准配置来即可 比如我希望注入dbADao、dbBDao、dbCDao那么我的配置文件这样写
以上方式配置好后,在程序内我们就可以按规则注入使用了,如: