ʲôÊÇÐÔ°Í¿ËAOP£¿
ÐÔ°Í¿ËAOPÊÇÒ»ÖÖ±à³Ì·¶Ê½£¬Ö¼ÔÚ½«ºáÇйØ×¢µã£¨ÈçÈÕÖ¾¼Ç¼¡¢ÊÂÎñ¹ÜÀí¡¢°²È«¿ØÖƵȣ©´ÓÒµÎñÂß¼ÖгéÀë³öÀ´£¬Í¨¹ý¡°ÇÐÃæ¡±£¨Aspect£©ºÍ¡°Í¨Öª¡±£¨Advice£©À´´¦Àí¡£Ïà±È?´«Í³µÄ±à³Ì·½Ê½£¬AOPÄܹ»¸ü¼ÓÇåÎúµØ·ÖÀëϵͳµÄ¸÷¸ö¹¦ÄÜÄ£¿é£¬Ìá¸ß´úÂëµÄ¿Éά»¤ÐԺͿɶÁÐÔ¡£
ÊÂÎñ¹ÜÀí
ÊÂÎñ¹ÜÀíÊÇÊý¾Ý¿â²Ù×÷Öг£¼ûµÄÐèÇó¡£Í¨¹ýÐÔ°Íͨ¹ýÐÔ°Í¿ËAOP£¬ÎÒÃÇ¿ÉÒÔÔÚ²»ÐÞ¸ÄÒµÎñ´úÂëµÄÇé¿öÏ£¬È·±£ÊÂÎñµÄÕýÈ·ÐÔºÍÒ»ÖÂÐÔ¡£
@AspectpublicclassTransactionAspect{@Around("execution(*com.example.service.*.*(..))")publicObjectmanageTransaction(ProceedingJoinPointjoinPoint)throwsThrowable{TransactionStatusstatus=TransactionAspect.transactionManager.getTransaction(newDefaultTransactionDefinition());try{Objectresult=joinPoint.proceed();transactionManager.commit(status);returnresult;}catch(Exceptione){transactionManager.rollback(status);throwe;}}}
°²È«¿ØÖÆ
ͨ¹ýAOP£¬ÎÒÃÇ¿ÉÒÔÔÚ²»Ð޸ľßÌåÒµÎñ´úÂëµÄÇé¿öÏ£¬ÊµÏÖ¶Ô·½·¨µÄ°²È«¿ØÖÆ¡£
@Aspect@ComponentpublicclassSecurityAspect{@Before("execution(*com.example.service.*.*(.*))")publicvoidcheckSecurity(JoinPointjoinPoint){//Ìí¼Ó°²È«¼ì²éÂß¼if(!isUserAuthorized()){thrownewSecurityException("Óû§Ã»ÓÐȨÏÞÖ´Ðд˲Ù×÷");}}privatebooleanisUserAuthorized(){//ʵ¼Ê°²È«¼ì²éÂß¼returntrue;}}
ÔÚÏÖ´ú±à³Ì»·¾³ÖУ¬ÈçºÎÌáÉý¹¤×÷ЧÂÊÒѳÉΪ¿ª·¢ÕߺÍÏîÄ¿¾Àí¹Ø×¢µÄ½¹µã¡£ÆäÖУ¬ÐÔ°Í¿ËAOP£¨AspectOrientedProgramming£¬ÃæÏò·½Ãæ±à³Ì£©×÷ΪһÖÖÐÂÐ˵ıà³Ì·¶Ê½£¬ÕýÖð½¥±»¹ã·ºÓ¦ÓÃÓÚ¸÷ÀàÈí¼þ¿ª·¢ÖС£±¾ÎĽ«Ïêϸ½éÉÜÐÔ°Í¿ËAOPµÄ»ù±¾¸ÅÄî¡¢ÓÅÊÆÒÔ¼°¾ßÌåÓ¦Ó÷½·¨£¬°ïÖúÄúÔÚʵ¼Ê¹¤×÷ÖлñµÃÏÔÖøµÄЧÂÊÌáÉý¡£
У¶Ô£º³ÂÎÄÜç(1C0m4pJyqZtPma0S7t9ZFfz4hTykKag)


