/*
* Copyright © 2014 YAOCHEN Corporation, All Rights Reserved
*/
package com.easyooo.framework.cache;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.core.Ordered;
import com.easyooo.framework.cache.spring.CacheAspectExecutor;
/**
* 通过AOP的方式将缓存与数据层集成
*
* @author Killer
*/
@Aspect
public class CacheAspect implements Ordered {
private CacheAspectExecutor executor;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Insert Pointcuts & Advice
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@Pointcut("execution(* com.easyooo.framework.demo.mapper..*.insert(..)) && args(bean,..)")
public void insertPointcut(Object bean) {
}
@Pointcut("execution(* com.easyooo.framework.demo.mapper..*.insertSelective(..)) && args(bean,..)")
public void insertSelectivePointcut(Object bean) {
}
@Around("insertPointcut(bean) || insertSelectivePointcut(bean)")
public Object insert(ProceedingJoinPoint pjp, Object bean) throws Throwable {
return executor.insert(pjp, bean);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// updateByPrimaryKey Pointcuts & Advice
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@Pointcut("execution(* com.easyooo.framework.demo.mapper..*.updateByPrimaryKey(..)) && args(bean,..)")
public void updateByPrimaryKeyPointcut(Object bean) {
}
@Pointcut("execution(* com.easyooo.framework.demo.mapper..*.updateByPrimaryKeySelective(..)) && args(bean,..)")
public void updateByPrimaryKeySelectivePointcut(Object bean) {
}
@Around("updateByPrimaryKeyPointcut(bean)")
public Object updateByPrimaryKey(ProceedingJoinPoint pjp, Object bean) throws Throwable {
return executor.updateByPrimaryKey(pjp, bean);
}
@Around("updateByPrimaryKeySelectivePointcut(bean)")
public Object updateByPrimaryKeySelective(ProceedingJoinPoint pjp, Object bean) throws Throwable {
return executor.updateByPrimaryKeySelective(pjp, bean);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// deleteByPrimaryKey Pointcuts & Advice
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@Pointcut("execution(* com.easyooo.framework.demo.mapper..*.deleteByPrimaryKey(..)) && args(bean,..)")
public void deleteByPrimaryKeyPointcut(Object bean) {
}
@Around("deleteByPrimaryKeyPointcut(bean)")
public Object deleteByPrimaryKey(ProceedingJoinPoint pjp, Object bean) throws Throwable {
return executor.deleteByPrimaryKey(pjp, bean);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// selectByPrimaryKey Pointcuts & Advice
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@Pointcut("execution(* com.easyooo.framework.demo.mapper..*.selectByPrimaryKey(..)) && args(bean,..)")
public void selectByPrimaryKeyPointcut(Object bean) {
}
@Around("selectByPrimaryKeyPointcut(bean)")
public Object selectByPrimaryKey(ProceedingJoinPoint pjp, Object bean) throws Throwable {
return executor.selectByPrimaryKey(pjp, bean);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// selectByGroupKey Pointcuts & Advice
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@Pointcut("execution(* com.easyooo.framework.demo.mapper..*.select*(..)) && args(bean,..)")
public void selectByGroupKeyPointcut(Object bean) {
}
@Around("selectByGroupKeyPointcut(bean)")
public Object selectByGroupKey(ProceedingJoinPoint pjp, Object bean) throws Throwable {
return executor.selectByGroupKey(pjp, bean);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// selectAll Pointcuts & Advice
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@Around("execution(* com.easyooo.framework.demo.mapper..*.selectAll())")
public Object selectAll(ProceedingJoinPoint pjp)throws Throwable {
return executor.selectAll(pjp);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// selectMergingObjectByPrimaryKey Pointcuts & Advice
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@Pointcut("execution(* com.easyooo.framework.demo.mapper..*.select*(..)) && args(bean,..)")
public void selectMergingByPrimaryKeyPointcut(Object bean) {
}
@Around("selectMergingByPrimaryKeyPointcut(bean)")
public Object selectMergingByPrimaryKey(ProceedingJoinPoint pjp, Object bean) throws Throwable {
return executor.selectMergingByPrimaryKey(pjp, bean);
}
@Override
public int getOrder() {
return 1;
}
public void setExecutor(CacheAspectExecutor executor) {
this.executor = executor;
}
}