NutzCN Logo
问答 nutz-plugins-spring-boot-starter 可以多数据源吗?
发布于 2690天前 作者 qq_8d0eba76 4334 次浏览 复制 上一个帖子 下一个帖子
标签:

nutz-plugins-spring-boot-starter 可以多数据源吗?

我看demo里只是

@Autowired
Dao dao;

多个数据源时,怎么指定 ?

12 回复

可以配置多数据源,但是目前 nutz-dao 只认识默认的数据源

@kerbores 我可以理解为 不支持 吗 ?

关键是你想实现的是什么,多个数据源怎么切换,这还是得业务来控制的

我想实现的是

@Autowired 注入nutzdao的时候指定数据源

我想知道@Autowired 怎么指定数据源

哦 , 我说错了, 我说的是

    @Autowired
    @Qualifier("ds01")
    private Dao dao;

http://blog.csdn.net/catoop/article/details/50575038 参考这个自己可以在业务代码层去实现一下

算了, 我还是删了 nutz-plugins-spring-boot-starter 吧

@Qualifier("ds01") 这种方式得声明多个 Dao 实例,所以自己配置一下就好了,但是如果要这么写的话目前包内的字段配置要稍作修改加一个@ConditionalOnMissingBean(Dao.class)

连 spring-boot 本身对多数据源的配置都没有走自动配置,只是提供了DataSourceBuilder让用户可以比较方便的构造 bean 而已

@Bean(name = "primaryDao")
    @Primary
    @Autowired
    public Dao primaryDao(@Qualifier("primaryDataSource") DataSource primaryDataSource) {
        return new NutDao(primaryDataSource);
    }


    @Bean(name = "secondDao")
    @Autowired
    public Dao secondDao(@Qualifier("secondaryDataSource") DataSource secondaryDataSource) {
        return new NutDao(secondaryDataSource);
    }

这样写好像不行,能给个思路吗?

@Bean(name = "primaryDao")
    @Primary
    @Autowired
    public Dao primaryDao(@Qualifier("primaryDataSource") DataSource primaryDataSource,FileSqlManager sqlManager) {
        return new NutDao(primaryDataSource,sqlManager);
    }
    @Bean(name="sqlManager")
    public FileSqlManager sqlManager(){
        String path = "sqls/test.sql";
        FileSqlManager sqlManager = new FileSqlManager(path);
        return sqlManager;
    }

    @Bean(name = "secondDao")
    @Autowired
    public Dao secondDao(@Qualifier("secondaryDataSource") DataSource secondaryDataSource,FileSqlManager sqlManager) {
        return new NutDao(secondaryDataSource,sqlManager);
    }

这样写可以了,只是不知道还有么有什么隐患

添加回复
请先登陆
回到顶部