1 / 18

Spring AOP Aspect Oriented Programming

Spring AOP Aspect Oriented Programming. By Srinivas Reddy.S. www.java9s.com. Cross Cutting Concerns. class Bank{ private int balance; public void withdraw( int amount){ bankLogger.info(“Withdraw –”+amount); tx.begin (); balance = this.balance -amount;

almira
Download Presentation

Spring AOP Aspect Oriented Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Spring AOPAspect Oriented Programming By SrinivasReddy.S www.java9s.com

  2. Cross Cutting Concerns class Bank{ private int balance; public void withdraw(int amount){ bankLogger.info(“Withdraw –”+amount); tx.begin(); balance = this.balance-amount; accountDao.saveBalance(balance); tx.commit(); } } www.java9s.com

  3. Cross Cutting Concerns Application Modules Application Modules Application Modules Application Modules Application Modules www.java9s.com

  4. Cross Cutting Concerns Logging Transaction Application Modules Application Modules Application Modules Spring Framework www.java9s.com

  5. AOP – Definitions. • Aspect • Joinpoint • Advice • Pointcut • Introduction • Target Object • AOP Proxy • Weaving www.java9s.com

  6. AOP – Definitions. Logger Advice Advisor Method Method Method Joinpoints Advisor Transaction Manager www.java9s.com

  7. AOP - Definitions • Advice defines what needs to be applied and when. • Jointpoint is where the advice is applied. • Pointcut is the combination of different joinpoints where the advice needs to be applied. • Aspect is applying the Advice at the pointcuts. www.java9s.com

  8. Advice Types • Before Advice • After returning Advice • Around Advice • Throws Advice Method Method Method Method Exception www.java9s.com

  9. AOP - Weaving • Compile time • Class Load Time • Runtime – Springs way Caller Target Proxy www.java9s.com

  10. Pointcut and Advisor POINTCUT CLASSES: • Perl5RegexpMethodPointcut • JdkRegexpMethodPointcut Pointcut and Advisor in one class: • RegexpMethodPointcutAdvisor www.java9s.com

  11. Example public class CustomerImpl implements Customer{ public void browse(){ System.out.println("Browsing the internet"); } } class CafeOwner{ void LogInTime(){ System.out.println(“Log In time and name of the customer”); } void LogOutTime(){ System.out.println(“Log Out Time”); } void issueUsageBill(){ System.out.println(“Calculate and bill the customer”); } } www.java9s.com

  12. Before Advice -MethodBeforeAdvice class InternetAdvisor implements MethodBeforeAdvice{ private CafeOwner cafeOwner; public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable { this.getCafeOwner().LogInTime(); } } www.java9s.com

  13. Customer Proxy Caller Target object CustomerImpl proxyInterface Customer RegexpMethodPointcutAdvisor “*” – Apply to all methods CafeOwner InternetAdvice implements MethodBeforeAdvice

  14. Configuration Step 1: Configure the Beans • <bean id ="customerImpl" class ="CustomerImpl"/> • <bean id = "cafeOwner" class ="CafeOwner"/> • <bean id ="internetAdvice" class ="InternetAdvice"> • <property name ="cafeOwner" ref ="cafeOwner"/> • </bean> www.java9s.com

  15. Configuration Step 2: Configure the POINTCUT ADVISOR • <bean id ="cafeOwnerBeforeAndAfterAdvice" class ="org.springframework.aop.support.RegexpMethodPointcutAdvisor"> <property name ="advice"> <ref local ="internetAdvice"/> </property> <property name ="pattern"> <value>.*</value> </property> </bean> www.java9s.com

  16. Configuration Step 3: Configure the ProxyFactoryBean <bean id ="customerProxy" class ="org.springframework.aop.framework.ProxyFactoryBean"> <property name ="target"> <ref local ="customerImpl"/> </property> <property name ="proxyInterfaces"> <value>Customer</value> </property> <property name ="interceptorNames"> <list> <value>cafeOwnerBeforeAndAfterAdvice</value> </list> </property> </bean> www.java9s.com

  17. Remember • Spring Does not support AOP for • Methods marked as final. • Fields www.java9s.com

  18. WWW.JAVA9S.COM

More Related