DataSourceAspect.java
1.3 KB
package com.eck.auto.config;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@Aspect
@Order(1)
@Configuration
public class DataSourceAspect {
private static final String dsNo="dsNo";//数据库编号 从header中取
/**
* 切入点,放在controller的每个方法上进行切入,更新数据源
*/
@Pointcut("execution(* com.eck.auto.controller..*.*(..))")
private void anyMethod(){}//定义一个切入点
@Before("anyMethod()")
public void dataSourceChange()
{
//请求头head中获取对应数据库编号
String no = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getHeader(dsNo);
System.out.print("当前数据源编号:"+no);
if(StringUtils.isEmpty(no)){
//TODO 根据业务抛异常
}
DataSourceHolder.setDataSource(no);
/*这里数据库项目编号来更改对应的数据源*/
}
}