Spring + AOP

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 注解声明切点

猜你喜欢

转载自blog.csdn.net/yss1019/article/details/81982774