Public CMS集成多个数据源很简单,只需要按照以下几步操作:
1. 修改ApplicationConfig.dataSource方法增加other
@Bean public DataSource dataSource() throws PropertyVetoException { CmsDataSource bean = new CmsDataSource(getDirPath(CommonConstants.BLANK) + CmsDataSource.DATABASE_CONFIG_FILENAME); try { bean.put("other", CmsDataSource .initDataSource(CmsDataSource.loadDatabaseConfig(getDirPath(CommonConstants.BLANK) + "other.properties"))); } catch (IOException e) { } CmsDataSource.initDefautlDataSource(); return bean; }
2. 在操作数据库,并开启事务前切换数据源
CmsDataSource.setDataSourceName("other");
3. 在访问数据库完毕应该还原数据源
CmsDataSource.resetDataSourceName();
具体原理就是继承并实现了框架的数据源路由类,使用线程变量来存储当前数据源名称,还原数据源也是把线程变量还原,防止后续其他任务读取到被污染的线程变量
标签:PublicCMS
0条评论
发表评论