Spring Aspect Logging : Spring-Aspect « Spring « Java 教程

En
Java 教程
1. 语言基础
2. 数据类型
3. 操作符
4. 流程控制
5. 类定义
6. 开发相关
7. 反射
8. 正则表达式
9. 集合
10. 线
11. 文件
12. 泛型
13. 本土化
14. Swing
15. Swing事件
16. 二维图形
17. SWT
18. SWT 二维图形
19. 网络
20. 数据库
21. Hibernate
22. JPA
23. JSP
24. JSTL
25. Servlet
26. Web服务SOA
27. EJB3
28. Spring
29. PDF
30. 电子邮件
31. 基于J2ME
32. J2EE应用
33. XML
34. 设计模式
35. 日志
36. 安全
37. Apache工具
38. 蚂蚁编译
39. JUnit单元测试
Java
Java 教程 » Spring » Spring-Aspect 
28. 50. 2. Spring Aspect Logging

File: IBusinessLogic.java

public interface IBusinessLogic
{
   public void foo();
   
   public void bar() throws BusinessLogicException;
}

File: LoggingThrowsAdvice.java

import org.springframework.aop.ThrowsAdvice;
import java.lang.reflect.Method;

public class LoggingThrowsAdvice implements ThrowsAdvice
{
   public void afterThrowing(Method method, Object[] args, Object target, Throwable subclass)
   {
      System.out.println("Logging that a " + subclass + "Exception was thrown.");
   }
}

File: MainApplication.java

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class MainApplication
{
   public static void main(String [] args)
   {
      // Read the configuration file
      ApplicationContext ctx
          new FileSystemXmlApplicationContext("build/springconfig.xml");

      //Instantiate an object
      IBusinessLogic testObject = (IBusinessLogicctx.getBean("businesslogicbean");

      //Execute the public methods of the bean
      testObject.foo();
      
      try
      {
         testObject.bar();
      }
      catch(BusinessLogicException ble)
      {
         System.out.println("Caught BusinessLogicException");
      }
   }
}

File: TracingAfterAdvice.java

import java.lang.reflect.Method;
import org.springframework.aop.AfterReturningAdvice;

public class TracingAfterAdvice implements AfterReturningAdvice
{
   public void afterReturning(Object object, Method m, Object[] args, Object targetthrows Throwable
   {
       System.out.println("Hello world! (by " this.getClass().getName() ")");
   }
}

File: TracingBeforeAdvice.java

import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;

public class TracingBeforeAdvice implements MethodBeforeAdvice
{
   public void before(Method m, Object[] args, Object targetthrows Throwable
   {
      System.out.println("Hello world! (by " this.getClass().getName() ")");
   }
}

File: BusinessLogic.java

public class BusinessLogic implements IBusinessLogic
{
     public void foo() 
     {
       System.out.println("Inside BusinessLogic.foo()");
     }
     
     public void bar() throws BusinessLogicException
     {
        System.out.println("Inside BusinessLogic.bar()");
        throw new BusinessLogicException();
     }
}

File: BusinessLogicException.java

public class BusinessLogicException extends Exception
{

}

File: springconfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC  "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

  <!--CONFIG-->
  <bean id="businesslogicbean"
  class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="proxyInterfaces">
      <value>IBusinessLogic</value>
    </property>
    <property name="target">
      <ref local="beanTarget"/>
    </property>
    <property name="interceptorNames">
      <list>
        <value>tracingBeforeAdvisor</value>
        <value>tracingAfterAdvisor</value>
        <value>loggingThrowsAdvisor</value>
      </list>
    </property>
  </bean>

  <!--CLASS-->
  <bean id="beanTarget"
  class="BusinessLogic"/>

  <!-- Advisor pointcut definition for before advice -->
  <bean id="tracingBeforeAdvisor"
  class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
    <property name="advice">
      <ref local="theTracingBeforeAdvice"/>
    </property>
    <property name="pattern">
      <value>.*</value>
    </property>
  </bean>
  
  <!-- Advisor pointcut definition for after advice -->
  <bean id="tracingAfterAdvisor"
  class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
    <property name="advice">
      <ref local="theTracingAfterAdvice"/>
    </property>
    <property name="pattern">
      <value>.*</value>
    </property>
  </bean>
  
  <!-- Advisor pointcut definition for throws advice -->
  <bean id="loggingThrowsAdvisor"
  class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
    <property name="advice">
      <ref local="theLoggingThrowsAdvice"/>
    </property>
    <property name="pattern">
      <value>.*</value>
    </property>
  </bean>

  <!--ADVICE-->
  <bean id="theTracingBeforeAdvice"
  class="TracingBeforeAdvice"/>
  <bean id="theTracingAfterAdvice"
  class="TracingAfterAdvice"/>
  <bean id="theLoggingThrowsAdvice"
  class="LoggingThrowsAdvice"/>
</beans>
  Download:  Spring-SpringAspectLogging.zip( 1,540 k)
28. 50. Spring-Aspect
28. 50. 1. Spring Tracing Aspect
28. 50. 2. Spring Aspect Logging
28. 50. 3. AspectJ切入点表达
28. 50. 4. AspectJ AutoProxy
28. 50. 5. 方面过滤器
28. 50. 6. Aspect Annotation Pointcut Around After
28. 50. 7. 侧面诠释
28. 50. 8. AOP的诠释
28. 50. 9. 范围注释
28. 50. 10. Spring AOP例子
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.