package com.surfbird.common.annotation; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; import com.surfbird.common.service.SqlServerService; import com.surfbird.common.service.SurfbirdService; import com.surfbird.util.Global; import com.surfbird.util.MultipleDataSource; @Aspect @Component public class MultipleDataSourceAspectAdvice { //@Around("execution(* com.surfbird..*.*(..))") @Around("execution(* com.surfbird..*Service.*(..))") public Object doAround(ProceedingJoinPoint jp) throws Throwable { if (jp.getTarget() instanceof SurfbirdService) { MultipleDataSource.setDataSourceKey(Global.DATA_SOURCE_MYSQL); } else if (jp.getTarget() instanceof SqlServerService) { MultipleDataSource.setDataSourceKey(Global.DATA_SOURCE_SQLSERVER); } else { MultipleDataSource.removeDataSourceKey(); } return jp.proceed(); } }