這篇文章主要講解了“AOP的原理是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“AOP的原理是什么”吧!
臨邑ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!AOP的原理
對哪些對象在什么位置攔截做什么 <=>
哪些對象
dataSourceAspect 是切面要攔截什么。aop:before就是在攔截對象的前面位置。method="before"就是使用切面中的方法處理攔截
85
86
87
如上是用配置文件配置的
還有方法是直接用注解方式
注解中也說明了,攔截范圍@Pointcut,在什么位置@Before,做什么@Aspect,具體攔截對象是誰JoinPoint
@Aspect
public class LoggingAspect {
// @Pointcut("execution(* com.samsung.sdsc.legal..*Impl.*(..)) || execution(* com.samsung.sdsc.legal..*Action.*(..))")
@Pointcut("execution(* com.samsung.sdsc.legal..*Impl.*(..))")
public void serviceMethod() {
}
@Before("serviceMethod()")
public void beforeLogging(JoinPoint thisJoinPoint) {
Class extends Object> clazz = thisJoinPoint.getTarget().getClass();
Logger logger = Logger.getLogger(clazz);
String methodName = thisJoinPoint.getSignature().getName();
Object[] arguments = thisJoinPoint.getArgs();
StringBuffer argBuf = new StringBuffer();
StringBuffer argValueBuf = new StringBuffer();
int i = 0;
for (Object argument : arguments) {
String argClassName = "";
if (null == argument) {
argClassName = "Null";
argument = "";
} else {
argClassName = argument.getClass().getSimpleName();
}
if (i > 0) {
argBuf.append(", ");
}
argBuf.append(argClassName + " arg" + ++i);
argValueBuf.append(".arg" + i + " : " + argument.toString() + "\n");
}
if (i == 0) {
argValueBuf.append("No arguments\n");
}
StringBuffer messageBuf = new StringBuffer();
messageBuf.append("before executing " + methodName + "("
+ argBuf.toString() + ") method");
messageBuf
.append("\n-------------------------------------------------------------------------------\n");
messageBuf.append(argValueBuf.toString());
messageBuf
.append("-------------------------------------------------------------------------------");
logger.info(messageBuf);
}
}
感謝各位的閱讀,以上就是“AOP的原理是什么”的內容了,經過本文的學習后,相信大家對AOP的原理是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!