ºÃÉ«ÏÈÉúaop¹¦Ð§Ïê½âÓëÊÊÓÃÖ¸ÄÏ

ȪԴ£ºÖ¤È¯Ê±±¨Íø×÷Õߣº
×ÖºÅ

1Î§ÈÆÍ¨Öª

Î§ÈÆÍ¨ÖªÊÇAOPÖÐ×îǿʢµÄ֪ͨÀàÐÍ£¬Ëü¿ÉÒÔÔÚÄ¿µÄÒªÁìÖ´ÐÐǰºó¾ÙÐÐ×Ô½ç˵²Ù×÷£¬ÉõÖÁ¿ÉÒÔÍêÈ«Ìæ»»Ä¿µÄÒªÁìµÄÖ´ÐÐ ¡£ÀýÈ磺

@AspectpublicclassPerformanceLoggingAspect{privatestaticfinalLoggerlogger=LoggerFactory.getLogger(PerformanceLoggingAspect.class);@Around("execution(*com.example.service.UserService.*(..))")publicObjectlogAroundMethod(ProceedingJoinPointjoinPoint)throwsThrowable{logger.info("Methodexecutionstarted...");longstartTime=System.currentTimeMillis();Objectresult=joinPoint.proceed();//CalltheactualmethodlongexecutionTime=System.currentTimeMillis()-startTime;logger.info("Methodexecutioncompleted.Result:"+result+".Executiontime:"+executionTime+"ms");returnresult;}}ÔÚÕâ¸öÀý×ÓÖУ¬ÎÒÃÇʹÓÃÁË`@Around`×¢½â½ç˵ÁËÒ»¸öÎ§ÈÆÍ¨Öª£¬ËüÔÚÄ¿µÄÒªÁìÖ´ÐÐǰºó¾ÙÐÐÁËÈÕÖ¾¼Í¼ºÍÖ´ÐÐʱ¼äÅÌËã ¡£

×î¼Ñʵ¼ù

×èֹ̫¹ýʹÓãºAOPËäÈ»¹¦Ð§Ç¿Ê¢£¬µ«Ì«¹ýʹÓÿÉÄܻᵼÖ´úÂëÄÑÒÔÃ÷È·ºÍά»¤ ¡£Òò´Ë£¬ÔÚʹÓÃAOPʱӦ±£?³Ö¾«Á·ºÍÃ÷È·£¬×èÖ¹½«ËùÓкáÇйØ×¢µã¶¼×ªÒƵ½ÇÐÃæÖÐ ¡£

×¢ÖØ²âÊÔ£ºÇÐÃæµÄÂß¼­ËäÈ»Ïà¶Ô×ÔÁ¦£¬µ«ËüÃÇÓëÓªÒµÂß¼­Ï¸ÃÜÏàÁ¬ ¡£Òò´Ë£¬Ó¦¸Ã¶ÔÇÐÃæ¾ÙÐгä·ÖµÄ²âÊÔ£¬È·±£ËüÃÇÔÚÏÖʵʹÓÃÖв»»áÒýÈëеÄÎÊÌâ ¡£

ÎĵµºÍ×¢ÊÍ£ºÎªÃ¿¸öÇÐÃæ±àдÏêϸµÄÎĵµºÍ×¢ÊÍ£¬×ÊÖúÍŶӳÉÔ±Ã÷È·ÇÐÃæµÄ×÷ÓúÍʵÏÖ·½·¨£¬Ìá¸ß´úÂëµÄ¿Éά»¤ÐÔ ¡£

ͨ¹ýÒÔÉÏÏêϸµÄ?¹¦Ð§ÏÈÈݺÍÊÊÓÃÖ¸ÄÏ£¬Ï£ÍûÄÜ×ÊÖúÄã¸üºÃµØÃ÷È·ºÍÓ¦ÓúÃÉ«ÏÈÉúµÄAOP¹¦Ð§ ¡£ÎÞÂÛÄãÊÇÐÂÊÖÕÕ¾É×ÊÉ·¢Õߣ¬ÕÆÎÕÕâЩ¼¼Çɶ¼½«ÎªÄãµÄÏîÄ¿¿ª·¢´øÀ´ÏÔÖøµÄÌáÉý ¡£ÏÂÃæÎÒÃǽ«ÉîÈë̽ÌÖһЩÏÖʵµÄÓ¦Óó¡¾°£¬²¢?ÌṩһЩÊÊÓõļ¼ÇÉ£¬ÒÔ±ãÄãÄÜÔÚÕæÊµ¿ª·¢ÇéÐÎÖгä·ÖÑéÕ¹ºÃÉ«ÏÈÉúAOPµÄDZÁ¦ ¡£

3ÎÞаµÄÇÐÈëµã±í´ïʽ

ÇÐÈëµã£¨Pointcut£©ÊÇAOPµÄÒªº¦¿´·¨£¬ÓÃÓÚÖ¸¶¨ÄÄЩҪÁì»òÀàÐèÒª±»ÔöÇ¿ ¡£ºÃÉ«ÏÈÉúÌṩÁËһϵÁÐǿʢµÄÇÐÈëµã±í´ïʽ£¬¿ÉÒÔÆ¾Ö¤ÒªÁìÊðÃû¡¢ÀàÃû¡¢°üÃûµÈ²î±ðÌõ¼þÀ´½ç˵ÇÐÈëµã ¡£

@Before("execution(*com.example.service.*.*(..))&&args(id)")publicvoidbeforeMethodWithId(Longid){System.out.println("Methodwithid:"+id+"started...");}

ÓÅ»¯ÇÐÃæÐÔÄÜ

ÇÐÃæµÄÖ´ÐпÉÄÜ»áÓ°ÏìϵͳµÄ?ÐÔÄÜ£¬Òò´ËÔÚÉè¼ÆºÍʹÓÃÇÐÃæÊ±Ó¦×¢ÖØÒÔϼ¸µã£º

×èÖ¹ÔÚÎ§ÈÆÍ¨ÖªÖоÙÐÐÖØ´óÅÌËã£ºÎ§ÈÆÍ¨ÖªÔÚÄ¿µÄÒªÁìÖ´ÐÐǰºó»á¾ÙÐÐÁ½´ÎŲÓã¬Òò´ËÔÚÎ§ÈÆÍ¨ÖªÖÐ×èÖ¹¾ÙÐÐÖØ´óÅÌËã»òI/O²Ù×÷£¬ÒÔÃâÓ°ÏìÐÔÄÜ ¡£

ºÏÀíÑ¡ÔñÅþÁ¬µãÆ¥Å乿Ôò£º¹ýÓÚ¿íËɵÄÅþÁ¬µãÆ¥Å乿Ôò¿ÉÄܻᵼÖ²»ÐëÒªµÄÇÐÃæÖ´ÐУ¬´Ó¶øÓ°ÏìÐÔÄÜ ¡£Òò´Ë£¬Ó¦Ö»¹Ü׼ȷµØ½ç˵ÅþÁ¬µãÆ¥Å乿Ôò ¡£

ʹÓøßЧµÄÖ¯Èë·½·¨£ºÆ¾Ö¤ÏîÄ¿ÐèÇóÑ¡ÔñºÏÊʵÄÖ¯Èë·½·¨£¨Èç±àÒëʱ֯Èë¡¢ÔËÐÐʱ֯ÈëºÍLoad-timeWeavable£©£¬ÒÔʵÏÖ×î¼ÑµÄÐÔÄܺͼæÈÝÐÔ ¡£

@Around("execution(*com.example.service.UserService.*(..))")publicObjectlogAroundMethod(ProceedingJoinPointjoinPoint)throwsThrowable{logger.info("Methodexecutionstarted...");Objectresult=joinPoint.proceed();logger.info("Methodexecutioncompleted.");returnresult;}

У¶Ô£ºËÎÏþ¾ü(f3J1ePQDlzHhwh44q38w4Ima2E3XrDq)

ÔðÈα༭£º ²ñ¾²
ÉùÃ÷£ºÖ¤È¯Ê±±¨Á¦ÕùÐÅÏ¢ÕæÊµ¡¢×¼È·£¬ÎÄÕÂÌá¼°ÄÚÈݽö¹©²Î¿¼£¬²»×é³ÉʵÖÊÐÔͶ×ʽ¨Ò飬¾Ý´Ë²Ù×÷Σº¦×Ôµ£
ÏÂÔØ"֤ȯʱ±¨"¹Ù·½APP£¬»ò¹Ø×¢¹Ù·½Î¢ÐŹ«Öںţ¬¼´¿ÉËæÊ±Ïàʶ¹ÉÊж¯Ì¬£¬¶´²ìÕþ²ßÐÅÏ¢£¬ÕÆÎղƲú»ú»á ¡£
ΪÄãÍÆ¼ö
Óû§Ì¸ÂÛ
µÇ¼ºó¿ÉÒÔ½²»°
ÍøÓÑ̸ÂÛ½ö¹©Æä±í´ïСÎÒ˽¼Ò¿´·¨£¬²¢²»Åúע֤ȯʱ±¨Ì¬¶È
ÔÝÎÞ̸ÂÛ
ºÃÉ«ÏÈÉúaop¹¦Ð§Ïê½âÓëÊÊÓÃÖ¸ÄÏ