CodeGym/Java Blog/āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹/AOP āĻ•āĻŋ? āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ­āĻ™ā§āĻ—āĻŋ āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ¨ā§€āĻ¤āĻŋ
John Squirrels
āĻ˛ā§‡āĻ­ā§‡āĻ˛ 41
San Francisco

AOP āĻ•āĻŋ? āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ­āĻ™ā§āĻ—āĻŋ āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ¨ā§€āĻ¤āĻŋ

āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹ āĻĻāĻ˛ā§‡ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤
āĻ¸āĻĻāĻ¸ā§āĻ¯āĻ—āĻŖ
āĻšāĻžāĻ‡, āĻŦāĻ¨ā§āĻ§ā§āĻ°āĻž āĻāĻŦāĻ‚ āĻŽā§‡āĻ¯āĻŧā§‡āĻ°āĻž! āĻŽā§ŒāĻ˛āĻŋāĻ• āĻ§āĻžāĻ°āĻŖāĻžāĻ—ā§āĻ˛āĻŋ āĻ¨āĻž āĻŦā§āĻā§‡, āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻāĻŦāĻ‚ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻŦā§‡āĻļ āĻ•āĻ āĻŋāĻ¨āĨ¤ āĻ¤āĻžāĻ‡ āĻ†āĻœ āĻ†āĻŽāĻ°āĻž āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ§āĻžāĻ°āĻŖāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻŦ — AOP, āĻ“āĻ°āĻĢā§‡ āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ­āĻ™ā§āĻ—āĻŋ-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĨ¤ AOP āĻ•āĻŋ?  āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ­āĻ™ā§āĻ—āĻŋāĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚-āĻāĻ° āĻŽā§‚āĻ˛āĻ¨ā§€āĻ¤āĻŋ- ā§§āĻāĻ‡ āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ¸āĻšāĻœ āĻ¨āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ–ā§āĻŦ āĻ•āĻŽāĻ‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ…āĻ¨ā§‡āĻ• āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻāĻŸāĻŋ āĻšā§āĻĄā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻāĻŦāĻ‚ āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ•āĻ–āĻ¨āĻ“ āĻ•āĻ–āĻ¨āĻ“ āĻ¸āĻžāĻ•ā§āĻˇāĻžāĻ¤ā§āĻ•āĻžāĻ°ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻ˛āĻž āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻŸāĻŋ āĻ•ā§€ āĻ§āĻ°āĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¤ā§ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ¤āĻžāĻšāĻ˛ā§‡ āĻšāĻ˛ā§āĻ¨ āĻœāĻžāĻ­āĻžāĻ¤ā§‡ AOP āĻāĻ° āĻŽā§ŒāĻ˛āĻŋāĻ• āĻ§āĻžāĻ°āĻŖāĻž āĻāĻŦāĻ‚ āĻ•āĻŋāĻ›ā§ āĻ¸āĻšāĻœ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§‡āĻ–ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ• āĨ¤ āĻāĻ–āĻ¨ āĻ¤āĻžāĻšāĻ˛ā§‡, AOP āĻāĻ° āĻ…āĻ°ā§āĻĨ āĻšāĻ˛ āĻĻāĻŋāĻ•-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚, āĻ¯āĻž āĻ•ā§āĻ°āĻ¸-āĻ•āĻžāĻŸāĻŋāĻ‚ āĻ‰āĻĻā§āĻŦā§‡āĻ—āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ…āĻ‚āĻļā§‡āĻ° āĻŽāĻĄā§āĻ˛āĻžāĻ°āĻŋāĻŸāĻŋ āĻŦāĻžāĻĄāĻŧāĻžāĻ¨ā§‹āĻ° āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻĻā§ƒāĻˇā§āĻŸāĻžāĻ¨ā§āĻ¤āĨ¤ āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻŽā§‚āĻ˛ āĻ•ā§‹āĻĄā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¨āĻž āĻ•āĻ°ā§‡āĻ‡ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ•ā§‹āĻĄā§‡ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ†āĻšāĻ°āĻŖ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ…āĻ¨ā§āĻ¯ āĻ•āĻĨāĻžāĻ¯āĻŧ, āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋāĻ•ā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻ•ā§‹āĻĄā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¨āĻž āĻ•āĻ°ā§‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻŦāĻ‚ āĻ•ā§āĻ˛āĻžāĻ¸ā§‡āĻ° āĻ‰āĻĒāĻ°ā§‡ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻā§āĻ˛āĻŋāĻ¯āĻŧā§‡ āĻ°āĻžāĻ–āĻžāĻ° āĻŽāĻ¤ āĻ­āĻžāĻŦāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ•ā§‡āĻ¨ āĻāĻ‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨? āĻļā§€āĻ˜ā§āĻ°āĻ‡ āĻŦāĻž āĻĒāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°ā§‡ āĻĒā§ŒāĻāĻ›ā§‡āĻ›āĻŋ āĻ¯ā§‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦāĻ¸ā§āĻ¤ā§-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°āĻ­āĻžāĻŦā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¨āĻžāĨ¤ āĻāĻŦāĻ‚ āĻ¯āĻ–āĻ¨ āĻ¸ā§‡āĻ‡ āĻŽā§āĻšā§‚āĻ°ā§āĻ¤āĻŸāĻŋ āĻ†āĻ¸ā§‡, AOP āĻ‰āĻĻā§āĻ§āĻžāĻ°ā§‡ āĻ†āĻ¸ā§‡ āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻāĻŦāĻ‚ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ° āĻ…āĻ°ā§āĻĨ āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻŦāĻŋāĻ•āĻžāĻļā§‡ āĻ¨āĻŽāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻŦā§ƒāĻĻā§āĻ§āĻŋ, āĻ¯āĻžāĻ° āĻ…āĻ°ā§āĻĨ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ°āĻ“ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĨ¤

AOP āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ­āĻ™ā§āĻ—āĻŋ-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ•ā§āĻ°āĻ¸-āĻ•āĻžāĻŸāĻŋāĻ‚ āĻ•āĻžāĻœāĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯ā§‡āĻŸāĻŋ āĻ¯ā§‡āĻ•ā§‹āĻ¨ āĻ•ā§‹āĻĄ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¯āĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻšā§āĻŦāĻžāĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¯āĻž āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ°ā§‚āĻĒā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻŽāĻĄāĻŋāĻ‰āĻ˛ā§‡ āĻ—āĻ āĻ¨ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ¤āĻĻāĻ¨ā§āĻ¸āĻžāĻ°ā§‡, AOP āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻŸāĻŋāĻ•ā§‡ āĻŽā§‚āĻ˛ āĻ•ā§‹āĻĄā§‡āĻ° āĻŦāĻžāĻ‡āĻ°ā§‡ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ‰āĻ˛ā§āĻ˛āĻŽā§āĻŦāĻ­āĻžāĻŦā§‡ āĻ˜ā§‹āĻˇāĻŖāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻ¨ā§€āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ. āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤, āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻ…āĻ¨ā§‡āĻ• āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻšāĻ˛ā§‡āĨ¤ āĻ†āĻ°āĻ“ āĻ•ā§€, āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋāĻ° āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻ¨ā§€āĻ¤āĻŋāĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻāĻŦāĻ‚ āĻ¨āĻ¤ā§āĻ¨ āĻ…āĻ‚āĻļāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¸āĻŽāĻžāĻ¨āĻ­āĻžāĻŦā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤ āĻāĻ•āĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻ¨ā§€āĻ¤āĻŋ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻŦāĻŋāĻ•āĻļāĻŋāĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ AOP āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻœāĻžāĻ¯āĻŧāĻ—āĻž āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻ˛ āĻ˛āĻ—āĻŋāĻ‚. āĻ˛āĻ—āĻŋāĻ‚ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°ā§€ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻ˛āĻ—āĻŋāĻ‚ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ AOP āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:
  1. āĻ˛āĻ—āĻŋāĻ‚ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§‹āĻĄ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ āĻ•āĻ°āĻž āĻ¸āĻšāĻœ: āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¯āĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¤āĻž āĻšāĻ˛ āĻ•āĻŋāĻ›ā§ āĻ•āĻŋāĻ›ā§ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻŦāĻž āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ āĻ•āĻ°āĻžāĨ¤

  2. āĻ˛āĻ—āĻŋāĻ‚ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻāĻ• āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻžāĻ° āĻĻāĻ°āĻ•āĻžāĻ° āĻ¨ā§‡āĻ‡ā§ˇ

  3. āĻ˛āĻ—āĻŋāĻ‚ āĻ•ā§‹āĻĄ āĻ¯ā§‡āĻ•ā§‹āĻ¨ āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ¯āĻŧ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻŦāĻ‚ āĻ•ā§āĻ˛āĻžāĻ¸ āĻ¯āĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻŦāĻž āĻ¨āĻ¤ā§āĻ¨ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻžāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻšā§āĻ°āĻžāĻ¸ āĻ•āĻ°ā§‡āĨ¤

    āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĻāĻŋāĻ• āĻ¸āĻ°āĻžāĻ¨ā§‹āĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¯ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŸā§āĻ°ā§‡āĻ¸āĻŋāĻ‚ āĻ•ā§‹āĻĄ āĻšāĻ˛ā§‡ āĻ—ā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻ•āĻŋāĻ›ā§āĻ‡ āĻŽāĻŋāĻ¸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋāĨ¤

  4. āĻĻāĻŋāĻ•āĻ—ā§āĻ˛āĻŋ āĻšāĻ˛ āĻĒā§ƒāĻĨāĻ• āĻ•ā§‹āĻĄ āĻ¯āĻž āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻāĻŦāĻ‚ āĻŦāĻžāĻ°āĻŦāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
AOP āĻ•āĻŋ?  āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ­āĻ™ā§āĻ—āĻŋ-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚-āĻāĻ° āĻŽā§‚āĻ˛āĻ¨ā§€āĻ¤āĻŋ - 2āĻāĻŸāĻŋāĻ•ā§‡ āĻĒā§āĻ¨āĻƒāĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻŋāĻ‚, āĻ•ā§āĻ¯āĻžāĻļāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻ¨āĻŋāĻˇā§āĻ•āĻžāĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯āĻ“ AOP āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

AOP āĻāĻ° āĻŽā§ŒāĻ˛āĻŋāĻ• āĻ¨ā§€āĻ¤āĻŋ

āĻāĻ‡ āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻ†āĻ°āĻ“ āĻāĻ—āĻŋāĻ¯āĻŧā§‡ āĻ¯ā§‡āĻ¤ā§‡, āĻ†āĻ¸ā§āĻ¨ āĻĒā§āĻ°āĻĨāĻŽā§‡ AOP āĻāĻ° āĻŽā§‚āĻ˛ āĻ§āĻžāĻ°āĻŖāĻžāĻ—ā§āĻ˛āĻŋ āĻœā§‡āĻ¨ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•āĨ¤ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ — āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ā§‡āĻ° āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻĨā§‡āĻ•ā§‡ āĻĄāĻžāĻ•āĻž āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻŦāĻž āĻ•ā§‹āĻĄāĨ¤ āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ā§‡āĻ° āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻ†āĻ—ā§‡, āĻĒāĻ°ā§‡ āĻŦāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (āĻ¨āĻŋāĻšā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻ°āĻ“)āĨ¤ āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ :
  1. āĻ†āĻ—ā§‡ — āĻŸāĻžāĻ°ā§āĻ—ā§‡āĻŸ āĻŽā§‡āĻĨāĻĄ, āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻœāĻ¯āĻŧā§‡āĻ¨ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ•ā§āĻ˛āĻžāĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĻāĻŋāĻ•āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ‰āĻĒāĻĻā§‡āĻļāĻŸāĻŋāĻ•ā§‡ āĻ†āĻ—ā§‡ āĻ†āĻ¸āĻ›ā§‡ āĻŦāĻ˛ā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻ†āĻŽāĻ°āĻž @Before āĻŸā§€āĻ•āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋāĨ¤ .aj āĻĢāĻžāĻ‡āĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĻāĻŋāĻ•āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ , āĻāĻŸāĻŋ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€() āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻšāĻŦā§‡ āĨ¤

  2. āĻ†āĻĢāĻŸāĻžāĻ° — āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋ (āĻœāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ) āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻ‰āĻĒāĻĻā§‡āĻļ, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻžā§āĻšāĻžāĻ˛āĻ¨ā§‡āĻ° āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĻ“āĨ¤

    āĻ•ā§āĻ˛āĻžāĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĻāĻŋāĻ•āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻŽāĻ°āĻž @After āĻŸā§€āĻ•āĻžāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻāĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻĒāĻ°ā§‡ āĻ†āĻ¸ā§‡āĨ¤

    .aj āĻĢāĻžāĻ‡āĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĻāĻŋāĻ•āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ , āĻāĻŸāĻŋ after() āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĨ¤

  3. āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻĒāĻ°ā§‡ — āĻāĻ‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļāĻŸāĻŋ āĻ¤āĻ–āĻ¨āĻ‡ āĻ¸āĻžā§āĻšāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¯āĻ–āĻ¨ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻļā§‡āĻˇ āĻšāĻ¯āĻŧāĨ¤

    āĻ¯āĻ–āĻ¨ āĻĻāĻŋāĻ•āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ•ā§āĻ˛āĻžāĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ†āĻŽāĻ°āĻž āĻ¸āĻĢāĻ˛āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽāĻžāĻĒā§āĻ¤āĻŋāĻ° āĻĒāĻ°ā§‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļāĻŸāĻŋāĻ•ā§‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°ā§€ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ @AfterReturning āĻŸā§€āĻ•āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤

    .aj āĻĢāĻžāĻ‡āĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĻāĻŋāĻ•āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ , āĻāĻŸāĻŋ āĻšāĻŦā§‡ after() āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨āĻŋāĻ‚ (āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ) āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĨ¤

  4. āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒā§‡āĻ° āĻĒāĻ°ā§‡ — āĻāĻ‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļāĻŸāĻŋ āĻāĻŽāĻ¨ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĻā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¯āĻ–āĻ¨ āĻāĻ•āĻŸāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ, āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻœāĻ¯āĻŧā§‡āĻ¨ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ, āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ āĻ•āĻ°ā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ§āĻ°āĻŖā§‡āĻ° āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻ•āĻžāĻ°ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻ°ā§‹āĻ˛ āĻŦā§āĻ¯āĻžāĻ• āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻŸā§āĻ°ā§‡āĻ¸ āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ˛āĻ— āĻ•āĻ°āĻ¤ā§‡)āĨ¤

    āĻļā§āĻ°ā§‡āĻŖā§€āĻ—āĻ¤ āĻĻāĻŋāĻ•āĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯, @AfterThrowing āĻŸā§€āĻ•āĻžāĻŸāĻŋ āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ āĻ¯ā§‡ āĻāĻ‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

    .aj āĻĢāĻžāĻ‡āĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĻāĻŋāĻ•āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ , āĻāĻŸāĻŋ āĻšāĻŦā§‡ after() āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ (āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ e) āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĨ¤

  5. āĻšāĻžāĻ°āĻĒāĻžāĻļā§‡ - āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻāĻ•. āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ•ā§‡ āĻ˜āĻŋāĻ°ā§‡ āĻĨāĻžāĻ•ā§‡, āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻāĻ•āĻŸāĻŋ āĻ¯ā§‹āĻ— āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ¯ā§‹āĻ— āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻšāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤

    āĻ†āĻĒāĻ¨āĻŋ āĻ…ā§āĻ¯āĻžāĻĄāĻ­āĻžāĻ¨ā§āĻ¸ āĻ•ā§‹āĻĄ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¯āĻž āĻœāĻ¯āĻŧā§‡āĻ¨ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡ āĻāĻŦāĻ‚ āĻĒāĻ°ā§‡ āĻšāĻ˛ā§‡āĨ¤

    āĻœāĻ¯āĻŧā§‡āĻ¨ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§‡ āĻ•āĻ˛ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻļā§‡āĻĒāĻžāĻļā§‡āĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻžāĻ¯āĻŧā§€ āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻ•āĻŋāĻ›ā§ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°ā§‡ āĻ¤āĻŦā§‡ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻŽāĻžāĻ¨āĨ¤ āĻ…āĻ¨ā§āĻ¯ āĻ•āĻĨāĻžāĻ¯āĻŧ, āĻāĻ‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§‡āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ°ā§āĻ—ā§‡āĻŸ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ˛āĻžāĻĒāĻŸāĻŋāĻ•ā§‡ āĻ•āĻ˛ āĻ¨āĻž āĻ•āĻ°ā§‡ āĻ…āĻ¨ā§āĻ•āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻĢā§‡āĻ°āĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻž āĻšāĻžāĻ¨ āĻ¤āĻž āĻĢā§‡āĻ°āĻ¤ āĻĻāĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

    āĻ•ā§āĻ˛āĻžāĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻĻāĻŋāĻ•, āĻ†āĻŽāĻ°āĻž @Around āĻŸā§€āĻ•āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻœāĻ¯āĻŧā§‡āĻ¨ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ•ā§‡ āĻŽā§‹āĻĄāĻŧāĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧāĨ¤ .aj āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ†āĻ•āĻžāĻ°ā§‡ āĻĻāĻŋāĻ•āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ , āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ () āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻšāĻŦā§‡ āĨ¤

āĻœāĻ¯āĻŧā§‡āĻ¨ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ - āĻāĻ•āĻŸāĻŋ āĻšāĻ˛āĻŽāĻžāĻ¨ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡āĻ° āĻŦāĻŋāĻ¨ā§āĻĻā§ (āĻ¯ā§‡āĻŽāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ•āĻ˛, āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ, āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸) āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤ āĻ…āĻ¨ā§āĻ¯ āĻ•āĻĨāĻžāĻ¯āĻŧ, āĻāĻŸāĻŋ āĻ•ā§‹āĻĄ āĻ‡āĻ¨āĻœā§‡āĻ•āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ—ā§āĻ˛āĻŋ āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻāĻ• āĻ§āĻ°āĻŖā§‡āĻ° āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ (āĻ¯ā§‡ āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤)āĨ¤ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ•āĻžāĻŸ — āĻœāĻ¯āĻŧā§‡āĻ¨ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸ āĨ¤ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ•āĻžāĻŸ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡ āĻ¯ā§‡ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻœāĻ¯āĻŧā§‡āĻ¨ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡ āĻĒā§āĻ°āĻ¯ā§‹āĻœā§āĻ¯ āĻ•āĻŋāĻ¨āĻžāĨ¤ āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ­āĻ™ā§āĻ—āĻŋ - āĻāĻ•āĻŸāĻŋ āĻŽāĻĄāĻŋāĻ‰āĻ˛ āĻŦāĻž āĻļā§āĻ°ā§‡āĻŖā§€ āĻ¯āĻž āĻ•ā§āĻ°āĻ¸-āĻ•āĻžāĻŸāĻŋāĻ‚ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°ā§‡āĨ¤ āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ­āĻ™ā§āĻ—āĻŋ āĻ•āĻŋāĻ›ā§ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ•āĻžāĻŸ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻœāĻ¯āĻŧā§‡āĻ¨ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°ā§‡ āĻ…āĻŦāĻļāĻŋāĻˇā§āĻŸ āĻ•ā§‹āĻĄā§‡āĻ° āĻ†āĻšāĻ°āĻŖ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡ āĨ¤ āĻ…āĻ¨ā§āĻ¯ āĻ•āĻĨāĻžāĻ¯āĻŧ, āĻāĻŸāĻŋ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻāĻŦāĻ‚ āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ā§‡āĻ° āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻ‚āĻŽāĻŋāĻļā§āĻ°āĻŖāĨ¤ āĻ­ā§‚āĻŽāĻŋāĻ•āĻžâ€” āĻŦāĻŋāĻĻā§‡āĻļā§€ āĻ•ā§‹āĻĄā§‡ āĻĻāĻŋāĻ•āĻŸāĻŋāĻ° āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻļā§āĻ°ā§‡āĻŖā§€āĻ° āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻāĻŦāĻ‚/āĻ…āĻĨāĻŦāĻž āĻ‰āĻ¤ā§āĻ¤āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ° āĻļā§āĻ°ā§‡āĻŖāĻŋāĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻžāĨ¤ āĻŸāĻžāĻ°ā§āĻ—ā§‡āĻŸ — āĻ¯ā§‡ āĻŦāĻ¸ā§āĻ¤ā§āĻ¤ā§‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻŦā§āĻ¨āĻ¨ - āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻĒā§āĻ°āĻ•ā§āĻ¸āĻŋ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ¸āĻžāĻĨā§‡ āĻĻāĻŋāĻ•āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĨ¤ āĻāĻŸāĻŋ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻŸāĻžāĻ‡āĻŽ, āĻ˛ā§‹āĻĄ āĻŸāĻžāĻ‡āĻŽ āĻŦāĻž āĻ°āĻžāĻ¨ āĻŸāĻžāĻ‡āĻŽā§‡ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ¤āĻŋāĻ¨ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻŦāĻ¯āĻŧāĻ¨ āĻ†āĻ›ā§‡:
  • āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛-āĻŸāĻžāĻ‡āĻŽ āĻ‰āĻ‡āĻ­āĻŋāĻ‚ — āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ­āĻ™ā§āĻ—āĻŋāĻ° āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻāĻŦāĻ‚ āĻ•ā§‹āĻĄ āĻĨāĻžāĻ•ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻĻāĻŋāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ AspectJ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻāĻŦāĻ‚ āĻĻāĻŋāĻ•āĻŸāĻŋ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨;

  • āĻĒā§‹āĻ¸ā§āĻŸ-āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ‰āĻ‡āĻ­āĻŋāĻ‚ (āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°ā§€ āĻ‰āĻ‡āĻ­āĻŋāĻ‚) — āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ•ā§‹āĻĄā§‡āĻ° āĻĻāĻŋāĻ•āĻ—ā§āĻ˛ā§‹ āĻŦā§āĻ¨āĻ¤ā§‡ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻĢāĻ°āĻŽā§‡āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻ¨āĻž āĻĒāĻžāĻ°ā§‡āĻ¨ āĻŦāĻž āĻ¨āĻž āĻšāĻžāĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻ—ā§‡ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻž āĻ•ā§āĻ˛āĻžāĻ¸ āĻŦāĻž āĻœāĻžāĻ° āĻĢāĻžāĻ‡āĻ˛ āĻ¨āĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĻāĻŋāĻ•āĻ—ā§āĻ˛ā§‹ āĻ‡āĻ¨āĻœā§‡āĻ•ā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨;

  • āĻ˛ā§‹āĻĄ-āĻŸāĻžāĻ‡āĻŽ āĻ‰āĻ‡āĻ­āĻŋāĻ‚ — āĻāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻ‰āĻ‡āĻ­āĻŋāĻ‚ āĻ¯āĻž āĻ•ā§āĻ˛āĻžāĻ¸āĻ˛ā§‹āĻĄāĻžāĻ° āĻ•ā§āĻ˛āĻžāĻ¸ āĻĢāĻžāĻ‡āĻ˛ āĻ˛ā§‹āĻĄ āĻ¨āĻž āĻ•āĻ°āĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻŦāĻ‚ JVM-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§āĻ˛āĻžāĻ¸ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ¨āĻž āĻ•āĻ°āĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻŦāĻŋāĻ˛āĻŽā§āĻŦāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤

    āĻāĻŸāĻŋ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻŦāĻ¯āĻŧāĻ¨ āĻļā§āĻ°ā§‡āĻŖā§€āĻ° āĻ˛ā§‹āĻĄāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤ āĻāĻ—ā§āĻ˛āĻŋ āĻšāĻ¯āĻŧ āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ­āĻžāĻŦā§‡ āĻ°āĻžāĻ¨āĻŸāĻžāĻ‡āĻŽ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻŦāĻž "āĻ‰āĻ‡āĻ­āĻŋāĻ‚ āĻāĻœā§‡āĻ¨ā§āĻŸ" āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

AspectJ — AOP āĻĻā§ƒāĻˇā§āĻŸāĻžāĻ¨ā§āĻ¤ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¯āĻž āĻ•ā§āĻ°āĻ¸-āĻ•āĻžāĻŸāĻŋāĻ‚ āĻ•āĻžāĻ°ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°ā§‡āĨ¤ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻāĻ–āĻžāĻ¨ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§‡ .

āĻœāĻžāĻ­āĻžāĻ¤ā§‡ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ

āĻāĻ° āĻĒāĻ°ā§‡, AOP- āĻāĻ° āĻ†āĻ°āĻ“ āĻ­āĻžāĻ˛ āĻŦā§‹āĻāĻžāĻ° āĻœāĻ¨ā§āĻ¯ , āĻ†āĻŽāĻ°āĻž āĻ›ā§‹āĻŸ "āĻšā§āĻ¯āĻžāĻ˛ā§‹ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ"-āĻ¸ā§āĻŸāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–āĻŦāĨ¤ āĻŦā§āĻ¯āĻžāĻŸā§‡āĻ° āĻĄāĻžāĻ¨āĻĻāĻŋāĻ•ā§‡, āĻ†āĻŽāĻŋ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°āĻŦ āĻ¯ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ—ā§āĻ˛āĻŋ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛-āĻŸāĻžāĻ‡āĻŽ āĻ‰āĻ‡āĻ­āĻŋāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦā§‡ āĨ¤ āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ†āĻŽāĻžāĻĻā§‡āĻ° pom.xml āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ :
<dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjrt</artifactId>
  <version>1.9.5</version>
</dependency>
āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻŦāĻŋāĻļā§‡āĻˇ ajc āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻšāĻ˛ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻĻāĻŋāĻ•āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋāĨ¤ IntelliJ IDEA āĻāĻŸāĻŋāĻ•ā§‡ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸāĻ°ā§‚āĻĒā§‡ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻ¤āĻžāĻ‡ āĻāĻŸāĻŋāĻ•ā§‡ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦā§‡āĻ›ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ 5168 75 AspectJ āĻŦāĻŋāĻ¤āĻ°āĻŖā§‡āĻ° āĻĒāĻĨ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻ‡ āĻĒā§āĻ°āĻĨāĻŽ āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻ›āĻŋāĻ˛. āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧāĻŸāĻŋ, āĻ¯āĻž āĻ†āĻŽāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ¤āĻž āĻšāĻ˛ pom.xml āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨āĻŸāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻž:
<build>
  <plugins>
     <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>aspectj-maven-plugin</artifactId>
        <version>1.7</version>
        <configuration>
           <complianceLevel>1.8</complianceLevel>
           <source>1.8</source>
           <target>1.8</target>
           <showWeaveInfo>true</showWeaveInfo>
           <<verbose>true<verbose>
           <Xlint>ignore</Xlint>
           <encoding>UTF-8</encoding>
        </configuration>
        <executions>
           <execution>
              <goals>
                 <goal>compile</goal>
                 <goal>test-compile</goal>
              </goals>
           </execution>
        </executions>
     </plugin>
  </plugins>
</build>
āĻāĻ° āĻĒāĻ°ā§‡, Maven āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ†āĻŽāĻĻāĻžāĻ¨āĻŋ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ mvn clean compile āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ˛ āĻ§āĻžāĻ°āĻŖāĻž āĨ¤ āĻāĻ–āĻ¨ āĻ†āĻ¸ā§āĻ¨ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻāĻ—āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¨āĻ‚ 1

āĻ†āĻ¸ā§āĻ¨ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ•ā§āĻ˛āĻžāĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋāĨ¤ āĻāĻ¤ā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻāĻ¨ā§āĻŸā§āĻ°āĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻĨāĻžāĻ•āĻŦā§‡ āĻ¯āĻž āĻ•āĻ¨āĻ¸ā§‹āĻ˛ā§‡ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻ¨āĻžāĻŽ āĻŽā§āĻĻā§āĻ°āĻŖ āĻ•āĻ°ā§‡:
public class Main {

  public static void main(String[] args) {
  printName("Tanner");
  printName("Victor");
  printName("Sasha");
  }

  public static void printName(String name) {
     System.out.println(name);
  }
}
āĻāĻ–āĻžāĻ¨ā§‡ āĻœāĻŸāĻŋāĻ˛ āĻ•āĻŋāĻ›ā§ āĻ¨ā§‡āĻ‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¨āĻžāĻŽ āĻĒāĻžāĻ¸ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ•āĻ¨āĻ¸ā§‹āĻ˛ā§‡ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻ°āĻž āĻāĻ–āĻ¨ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŸāĻŋ āĻšāĻžāĻ˛āĻžāĻ‡, āĻ†āĻŽāĻ°āĻž āĻ•āĻ¨āĻ¸ā§‹āĻ˛ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤āĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻŦ:
āĻŸā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻ­āĻŋāĻ•ā§āĻŸāĻ° āĻ¸āĻžāĻļāĻž
āĻāĻ–āĻ¨ āĻ¤āĻžāĻšāĻ˛ā§‡, AOP āĻāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻžāĻ° āĻ¸āĻĻā§āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ¸ā§‡āĻ›ā§‡āĨ¤ āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ¸āĻĒā§‡āĻ•ā§āĻŸ āĻĢāĻžāĻ‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĨ¤ āĻāĻ—ā§āĻ˛āĻŋ āĻĻā§āĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ°: āĻĒā§āĻ°āĻĨāĻŽāĻŸāĻŋāĻ¤ā§‡ .aj āĻĢāĻžāĻ‡āĻ˛ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧāĻŸāĻŋ āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻļā§āĻ°ā§‡āĻŖā§€ āĻ¯āĻž AOP āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŸā§€āĻ•āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻĒā§āĻ°āĻĨāĻŽā§‡ .aj āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ¸āĻš āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻĻā§‡āĻ–āĻŋ :
public aspect GreetingAspect {

  pointcut greeting() : execution(* Main.printName(..));

  before() : greeting() {
     System.out.print("Hi, ");
  }
}
āĻāĻ‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻ˛āĻžāĻ¸ā§‡āĻ° āĻŽāĻ¤ā§‹āĨ¤ āĻ†āĻ¸ā§āĻ¨ āĻĻā§‡āĻ–āĻŋ āĻāĻ–āĻžāĻ¨ā§‡ āĻ•āĻŋ āĻ˜āĻŸāĻ›ā§‡: āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ•āĻžāĻŸ āĻšāĻ˛ āĻœāĻ¯āĻŧā§‡āĻ¨ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸ; greeting() āĻāĻ‡ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ•āĻžāĻŸā§‡āĻ° āĻ¨āĻžāĻŽ; : execution āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻ¯ā§‡ āĻāĻŸāĻŋ Main.printName(...) āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ ( * ) āĻ•āĻ˛ā§‡āĻ° āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĨ¤ āĻāĻ°āĻĒāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻ†āĻ¸ā§‡ — before() — āĻ¯āĻž āĻŸāĻžāĻ°ā§āĻ—ā§‡āĻŸ āĻŽā§‡āĻĨāĻĄ āĻ•āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ : greeting() āĻšāĻ˛ āĻ¸ā§‡āĻ‡ āĻ•āĻžāĻŸāĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ¯āĻž āĻāĻ‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļā§‡ āĻ¸āĻžāĻĄāĻŧāĻž āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻ āĻŋāĻ• āĻ†āĻ›ā§‡, āĻāĻŦāĻ‚ āĻ¨ā§€āĻšā§‡ āĻ†āĻŽāĻ°āĻž āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻŽā§‚āĻ˛ āĻ…āĻ‚āĻļāĻŸāĻŋ āĻĻā§‡āĻ–āĻŋ, āĻ¯āĻž āĻœāĻžāĻ­āĻž āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻ˛ā§‡āĻ–āĻž, āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻŦā§āĻāĻŋāĨ¤ āĻ¯āĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻĻāĻŋāĻ•āĻŸāĻŋ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻšāĻžāĻ˛āĻžāĻ‡ , āĻ¤āĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ•āĻ¨āĻ¸ā§‹āĻ˛ āĻ†āĻ‰āĻŸāĻĒā§āĻŸāĻŸāĻŋ āĻĒāĻžāĻŦ:
āĻšāĻžāĻ‡, āĻŸā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻšāĻžāĻ‡, āĻ­āĻŋāĻ•ā§āĻŸāĻ° āĻšāĻžāĻ‡, āĻ¸āĻžāĻļāĻž
āĻ†āĻŽāĻ°āĻž āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›āĻŋ āĻ¯ā§‡ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻŸāĻ¨ā§‡āĻŽ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ•āĻ˛ āĻāĻ•āĻŸāĻŋ āĻĻāĻŋāĻ•āĻ•ā§‡ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻ–āĻ¨ āĻŸā§€āĻ•āĻž āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻœāĻžāĻ­āĻž āĻ•ā§āĻ˛āĻžāĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ­āĻ™ā§āĻ—āĻŋ āĻ•ā§‡āĻŽāĻ¨ āĻšāĻŦā§‡ āĻ¤āĻž āĻāĻ•āĻŦāĻžāĻ° āĻĻā§‡āĻ–ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•:
@Aspect
public class GreetingAspect{

  @Pointcut("execution(* Main.printName(String))")
  public void greeting() {
  }

  @Before("greeting()")
  public void beforeAdvice() {
     System.out.print("Hi, ");
  }
}
.aj āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ­āĻ™ā§āĻ—āĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻĒāĻ°ā§‡ , āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻ°āĻ“ āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻšāĻ¯āĻŧā§‡ āĻ“āĻ ā§‡:
  • @āĻ†āĻ¸āĻĒā§‡āĻ•ā§āĻŸ āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻ¯ā§‡ āĻāĻ‡ āĻļā§āĻ°ā§‡āĻŖā§€āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĻāĻŋāĻ•;
  • @Pointcut("execution(* Main.printName(String))") āĻšāĻ˛ āĻ•āĻžāĻŸāĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ¯āĻž Main.printName- āĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ¨āĻĒā§āĻŸ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻ¸āĻš āĻŸā§āĻ°āĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻžāĻ° āĻ§āĻ°āĻ¨ āĻšāĻ˛ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ ;
  • @Before("greeting()") āĻšāĻ˛ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻ¯āĻž āĻ…āĻ­āĻŋāĻŦāĻžāĻĻāĻ¨() āĻ•āĻžāĻŸāĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•ā§‹āĻĄā§‡ āĻ•āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĨ¤
āĻāĻ‡ āĻĻāĻŋāĻ•āĻŸāĻŋ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻ•āĻ¨āĻ¸ā§‹āĻ˛ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡ āĻ¨āĻž:
āĻšāĻžāĻ‡, āĻŸā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻšāĻžāĻ‡, āĻ­āĻŋāĻ•ā§āĻŸāĻ° āĻšāĻžāĻ‡, āĻ¸āĻžāĻļāĻž

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¨āĻ‚ 2

āĻ§āĻ°ā§āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻŽāĻ¨ āĻ•āĻŋāĻ›ā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ†āĻ›ā§‡ āĻ¯āĻž āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ•āĻ°ā§‡, āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋāĻ•ā§‡ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻŦāĻ˛āĻŋ :
public class Main {

  public static void main(String[] args) {
  performSomeOperation("Tanner");
  }

  public static void performSomeOperation(String clientName) {
     System.out.println("Performing some operations for Client " + clientName);
  }
}
āĻ†āĻ¸ā§āĻ¨ āĻāĻ•āĻŸāĻŋ "āĻ›āĻĻā§āĻŽ-āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨" āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ @Around āĻŸā§€āĻ•āĻžāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ:
@Aspect
public class TransactionAspect{

  @Pointcut("execution(* Main.performSomeOperation(String))")
  public void executeOperation() {
  }

  @Around(value = "executeOperation()")
  public void beforeAdvice(ProceedingJoinPoint joinPoint) {
     System.out.println("Opening a transaction...");
     try {
        joinPoint.proceed();
        System.out.println("Closing a transaction...");
     }
     catch (Throwable throwable) {
        System.out.println("The operation failed. Rolling back the transaction...");
     }
  }
  }
ProceedingJoinPoint āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻ…āĻ—ā§āĻ°āĻ¸āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ , āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļā§‡ āĻāĻ° āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻ°āĻž āĻŽā§‹āĻĄāĻŧāĻžāĻ¨ā§‹ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ•ā§‡ āĻŦāĻ˛āĻŋāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ‰āĻĒāĻ°ā§‡āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ•ā§‹āĻĄ joinPoint.proceed(); āĻ†āĻ—ā§‡ āĻ†āĻ›ā§‡ , āĻ¯āĻ–āĻ¨ āĻ¨āĻŋāĻšā§‡āĻ° āĻ•ā§‹āĻĄāĻŸāĻŋ āĻĒāĻ°ā§‡ āĨ¤ āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻ°āĻž main āĻšāĻžāĻ˛āĻžāĻ‡ , āĻ†āĻŽāĻ°āĻž āĻ•āĻ¨āĻ¸ā§‹āĻ˛ā§‡ āĻāĻŸāĻŋ āĻĒāĻžāĻ‡:
āĻāĻ•āĻŸāĻŋ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻ–ā§‹āĻ˛āĻž āĻšāĻšā§āĻ›ā§‡... āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻŸā§āĻ¯āĻžāĻ¨āĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡...
āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§‡ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ•āĻ°āĻŋ (āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ…āĻ¨ā§āĻ•āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡):
public static void performSomeOperation(String clientName) throws Exception {
  System.out.println("Performing some operations for Client " + clientName);
  throw new Exception();
}
āĻ¤āĻžāĻ°āĻĒāĻ° āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ•āĻ¨āĻ¸ā§‹āĻ˛ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻĒā§‡āĻ¤ā§‡:
āĻāĻ•āĻŸāĻŋ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻ–ā§‹āĻ˛āĻž āĻšāĻšā§āĻ›ā§‡... āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻŸā§āĻ¯āĻžāĻ¨āĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ā§ˇ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻŦā§āĻ¯āĻžāĻ• āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡...
āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻ°āĻž āĻāĻ–āĻžāĻ¨ā§‡ āĻļā§‡āĻˇ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¤āĻž āĻšāĻ˛ āĻāĻ• āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻŋāĻ‚ āĻ•ā§āĻˇāĻŽāĻ¤āĻžāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¨āĻ‚ 3

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡, āĻ†āĻ¸ā§āĻ¨ āĻ•āĻ¨āĻ¸ā§‹āĻ˛ā§‡ āĻ˛āĻ—āĻŋāĻ‚ āĻ•āĻ°āĻžāĻ° āĻŽāĻ¤ā§‹ āĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻŋāĨ¤ āĻĒā§āĻ°āĻĨāĻŽā§‡, Main- āĻ āĻāĻ•āĻŦāĻžāĻ° āĻĻā§‡āĻ–ā§āĻ¨ , āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻ°āĻž āĻ•āĻŋāĻ›ā§ āĻ›āĻĻā§āĻŽ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ• āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĻ›āĻŋ:
public class Main {
  private String value;

  public static void main(String[] args) throws Exception {
     Main main = new Main();
     main.setValue("<some value>");
     String valueForCheck = main.getValue();
     main.checkValue(valueForCheck);
  }

  public void setValue(String value) {
     this.value = value;
  }

  public String getValue() {
     return this.value;
  }

  public void checkValue(String value) throws Exception {
     if (value.length() > 10) {
        throw new Exception();
     }
  }
}
āĻĒā§āĻ°āĻ§āĻžāĻ¨āĻ¤ , āĻ†āĻŽāĻ°āĻž āĻŽāĻžāĻ¨ āĻ‡āĻ¨āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻŽāĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ setValue āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻŽāĻžāĻ¨ āĻĒā§‡āĻ¤ā§‡ getValue āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻšā§‡āĻ•āĻ­ā§āĻ¯āĻžāĻ˛ā§āĻ•ā§‡ āĻ•āĻ˛ āĻ•āĻ°āĻŋ āĻāĻŸāĻŋ 10 ​​āĻ…āĻ•ā§āĻˇāĻ°ā§‡āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻĻā§€āĻ°ā§āĻ˜ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻĻā§‡āĻ–āĻ¤ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻ¤āĻžāĻ‡ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ āĻ•āĻ°āĻž āĻšāĻŦā§‡. āĻāĻ–āĻ¨ āĻ†āĻ¸ā§āĻ¨ āĻ†āĻŽāĻ°āĻž āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻ•āĻžāĻœ āĻ˛āĻ— āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯ā§‡ āĻĻāĻŋāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦ āĻ¤āĻž āĻĻā§‡āĻ–āĻŋ:
@Aspect
public class LogAspect {

  @Pointcut("execution(* *(..))")
  public void methodExecuting() {
  }

  @AfterReturning(value = "methodExecuting()", returning = "returningValue")
  public void recordSuccessfulExecution(JoinPoint joinPoint, Object returningValue) {
     if (returningValue != null) {
        System.out.printf("Successful execution: method — %s method, class — %s class, return value — %s\n",
              joinPoint.getSignature().getName(),
              joinPoint.getSourceLocation().getWithinType().getName(),
              returningValue);
     }
     else {
        System.out.printf("Successful execution: method — %s, class — %s\n",
              joinPoint.getSignature().getName(),
              joinPoint.getSourceLocation().getWithinType().getName());
     }
  }

  @AfterThrowing(value = "methodExecuting()", throwing = "exception")
  public void recordFailedExecution(JoinPoint joinPoint, Exception exception) {
     System.out.printf("Exception thrown: method — %s, class — %s, exception — %s\n",
           joinPoint.getSignature().getName(),
           joinPoint.getSourceLocation().getWithinType().getName(),
           exception);
  }
}
āĻāĻ–āĻžāĻ¨ā§‡ āĻ•āĻŋ āĻšāĻšā§āĻ›ā§‡? @Pointcut("execution(* *(..))") āĻ¸āĻŦ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸āĻŦ āĻ•āĻ˛ā§‡ āĻ¯ā§‹āĻ— āĻĻā§‡āĻŦā§‡āĨ¤ @AfterReturning(value = "methodExecuting()", returning = "returningValue") āĻšāĻ˛ āĻ‰āĻĒāĻĻā§‡āĻļ āĻ¯āĻž āĻŸāĻžāĻ°ā§āĻ—ā§‡āĻŸ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¸āĻĢāĻ˛āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§‡āĻ° āĻĒāĻ° āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ–āĻžāĻ¨ā§‡ āĻĻā§āĻŸāĻŋ āĻ•ā§‡āĻ¸ āĻ†āĻ›ā§‡:
  1. āĻ¯āĻ–āĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻŽāĻžāĻ¨ āĻĨāĻžāĻ•ā§‡ — āĻ¯āĻĻāĻŋ (returningValue! = Null) {
  2. āĻ¯āĻ–āĻ¨ āĻ•ā§‹āĻ¨ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻŽāĻžāĻ¨ āĻĨāĻžāĻ•ā§‡ āĻ¨āĻž — āĻ…āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ {
@AfterThrowing(value = "methodExecuting()", throwing = "exception") āĻšāĻ˛ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻ¯āĻ–āĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ āĻ•āĻ°ā§‡ āĻ¤āĻ–āĻ¨ āĻŸā§āĻ°āĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€, main āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ , āĻ†āĻŽāĻ°āĻž āĻāĻ• āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ•āĻ¨āĻ¸ā§‹āĻ˛-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻ˛āĻ—āĻŋāĻ‚ āĻĒāĻžāĻŦ:
āĻ¸āĻĢāĻ˛ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨: āĻĒāĻĻā§āĻ§āĻ¤āĻŋ — setValue, āĻļā§āĻ°ā§‡āĻŖā§€ — āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¸āĻĢāĻ˛ āĻ¸āĻžā§āĻšāĻžāĻ˛āĻ¨: āĻĒāĻĻā§āĻ§āĻ¤āĻŋ — getValue, āĻļā§āĻ°ā§‡āĻŖā§€ — āĻĒā§āĻ°āĻ§āĻžāĻ¨, āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻŽāĻžāĻ¨ — <some value> āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ: āĻĒāĻĻā§āĻ§āĻ¤āĻŋ — checkValue, āĻ•ā§āĻ˛āĻžāĻ¸ — āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ — java.lang.Exception āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ: āĻĒāĻĻā§āĻ§āĻ¤āĻŋ — āĻĒā§āĻ°āĻ§āĻžāĻ¨, āĻļā§āĻ°ā§‡āĻŖā§€ — āĻĒā§āĻ°āĻ§āĻžāĻ¨, āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ — java.lang.Exception
āĻāĻŦāĻ‚ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻ°āĻž āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽāĻ—ā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻŋāĻ¨āĻŋ, āĻ†āĻŽāĻ°āĻž āĻāĻ–āĻ¨āĻ“ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ• āĻŸā§āĻ°ā§‡āĻ¸ āĻĒāĻžāĻŦ: AOP āĻ•āĻŋ?  āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ­āĻ™ā§āĻ—āĻŋ-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚-āĻāĻ° āĻŽā§‚āĻ˛āĻ¨ā§€āĻ¤āĻŋ - 3āĻ†āĻĒāĻ¨āĻŋ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻĒāĻĄāĻŧāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨: āĻœāĻžāĻ­āĻžāĻ¤ā§‡ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽāĻ—ā§āĻ˛āĻŋ: āĻ§āĻ°āĻž āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĨ¤ āĻ†āĻœ āĻ†āĻŽāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ‡ āĻ¸āĻŦ. āĻ†āĻœ āĻ†āĻŽāĻ°āĻž AOP- āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋ , āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒā§‡āĻ°ā§‡āĻ›ā§‡āĻ¨ āĻ¯ā§‡ āĻāĻ‡ āĻœāĻ¨ā§āĻ¤ā§āĻŸāĻŋ āĻ¤āĻ¤āĻŸāĻž āĻ­ā§€āĻ¤āĻŋāĻ•āĻ° āĻ¨āĻ¯āĻŧ āĻ¯āĻ¤āĻŸāĻž āĻŽāĻžāĻ¨ā§āĻˇ āĻāĻŸāĻŋāĻ•ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤ āĻŦāĻŋāĻĻāĻžāĻ¯āĻŧ āĻ¸āĻŦāĻžāĻ‡!
āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯
  • āĻœāĻ¨āĻĒā§āĻ°āĻŋā§Ÿ
  • āĻ¨āĻ¤ā§āĻ¨
  • āĻĒā§āĻ°āĻžāĻ¨ā§‹
āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ˛ā§‡āĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¤ā§‹āĻŽāĻžāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ¸āĻžāĻ‡āĻ¨ āĻ‡āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡
āĻāĻ‡ āĻĒāĻžāĻ¤āĻžā§Ÿ āĻāĻ–āĻ¨āĻ“ āĻ•ā§‹āĻ¨ā§‹ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ¨ā§‡āĻ‡