AOP:
面向切面编程,相对于OOP切面编程
Spring 的AOP为了解耦,AOP可以让一组类共享相同的行为
Spring 支持Aspect声明的注解式切面编程
下面的代码示例:
为了解决在执行某个方法时,需要切换数据库
@Aspect
@Component
public class DataSourceAspect {
@Before("execution(* cn.com.citydo.web.mapper.oracle.ExecuteSqlFromOracleMapper.execute(..))")
public void setSecondaryDataSource(JoinPoint point) {
DatabaseContextHolder.setDatabaseType(DatabaseType.secondaryDb);
}
@After("execution(* cn.com.citydo.web.mapper.oracle.ExecuteSqlFromOracleMapper.execute(..))")
public void setPrimaryDataSource(JoinPoint point) {
DatabaseContextHolder.setDatabaseType(DatabaseType.primaryDb);
}
}
1) @Aspect 声明一个切面
2) @Component 让此切面成为spring 容器管理的bean
3) @PointCut 注解声明切点