spring配置多数据源,我用aop实现数据库的自动选择
为什么总是先先执行get方法后再执行set方法,完全搞反了 求高人指点~~~
这是我aop类的代码,其他的跟网上的一样
public class DaoAdvice implements MethodBeforeAdvice{
/**
 * key是数据源
 * values是daos,value 是daos,使用key的数据库的dao
 */
private static Map<String, String> dataSources;
public void before(Method method, Object[] args, Object obj) throws Throwable {
String classSimpleName = obj.getClass().getSimpleName(); 
String className = classSimpleName.substring(0, classSimpleName.length()-3); 
Set<String> keys = dataSources.keySet(); 
for (Iterator<String> iterator = keys.iterator();  iterator.hasNext();) {
String dataSource = (String) iterator.next(); 
String daos = ","+dataSources.get(dataSource)+","; 
if(daos.indexOf(className)!=-1){ 
CustomerContextHolder.setCustomerType("aop set Sql:"+dataSource);
System.out.println("aop自动选择sql:"+dataSource);
break; 


}
public static Map<String, String> getDataSources() {
return dataSources;
}
public static void setDataSources(Map<String, String> dataSources) {
DaoAdvice.dataSources = dataSources;
}

解决方案 »

  1.   

    AOP的几个通知,两个回复
    动态路由获取数据源选择sql:null   (get)
    aop自动选择sql:dataSource2   (set)
     当有两个语句执行时 先查询 在添加,aop2个通知 
    动态路由获取数据源选择sql:dataSource2 (get)
    aop自动选择sql:dataSource1 (set)但是我想要的结果是先set再get