AOP Simple example

原创 2004年07月08日 00:24:00

There is a simple Spring AOP Style example that took me some time to finish it. It's so easy and enjoyable. Hope it would do some help to you. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

代码:


import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * User: <a href="mailto:xxxxx@utstar.com">xxxxxxx</a>
 * Date: Dec 17, 2003
 * Time: 7:54:56 PM
 * all rights reserved by utstarcom
 */
public class MyInterceptor implements MethodInterceptor {
    private final Log logger=LogFactory.getLog(MyInterceptor.class);
    public Object invoke(MethodInvocation methodInvocation) throws Throwable {
        logger.info("Beginning method: " + methodInvocation.getMethod().getDeclaringClass() + "::" + methodInvocation.getMethod().getName());
        for(int i=0;i<methodInvocation.getArgumentCount();i++){
            logger.info(methodInvocation.getArgument(i));
        }
        long startTime = System.currentTimeMillis();
        try {
            Object retVal = methodInvocation.proceed();
            return retVal;
        } finally {
            logger.info("Ending method: " + methodInvocation.getMethod().getDeclaringClass() + "::" + methodInvocation.getMethod().getName());
            logger.info("Method invocation time: " + (System.currentTimeMillis() - startTime) + " msecs.");
        }
    }
}



代码:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * User: <a href="mailto:xxxxx@utstar.com">xxxxxx</a>
 * Date: Dec 17, 2003
 * Time: 8:07:41 PM
 * all rights reserved by utstarcom
 */
public class HelloWorldImpl implements HelloWorld{
    private final static Log logger = LogFactory.getLog(HelloWorldImpl.class);

    public void sayHello(int age,String name){
        logger.info("age:"+age+" name:"+name);
    }
}




代码:

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;

import java.io.InputStream;
import java.io.FileInputStream;

/**
 * User: <a href="mailto:xxxxxx@utstar.com">xxxxx</a>
 * Date: Dec 17, 2003
 * Time: 8:00:38 PM
 * all rights reserved by utstarcom
 */
public class StudyAOP {
    public static void main(String[] args){
        //try to initialize the BeanFactory
        BeanFactory factory = null;
        InputStream in=null;
        try{
            in = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.xml");
            factory=new XmlBeanFactory(in);
            HelloWorld greet=(HelloWorld)factory.getBean("greeting");
            greet.sayHello(10,"zhonglin");
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{in.close();}catch(Exception e){}
        }

    }
}

 

代码:

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


<beans>

    <bean id="helloworld" class="HelloWorldImpl"/>
    <bean id="myInterceptor" class="MyInterceptor"/>

    <bean id="greeting" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>HelloWorld</value>
        </property>
        <property name="interceptorNames">
            <list>
                <value>myInterceptor</value>
                <value>helloworld</value>
            </list>
        </property>
    </bean>
</beans>




代码:

/**
 * User: <a href="mailto:xxxxxx@utstar.com">xxxxx</a>
 * Date: Dec 17, 2003
 * Time: 8:17:19 PM
 * all rights reserved by utstarcom
 */
public interface HelloWorld {
    void sayHello(int age,String name);
}

 

         come from http://spring.jactiongroup.net/viewtopic.php?t=144

一种比较简单的web端SSO方案

这是种比较简单易行单点登录(SSO Single sign-on方案,只有auth token,没有request token,自己家的系统集成提供一点思路。文章的阅读对象需要比较熟悉web开发,因为...
  • lzz957748332
  • lzz957748332
  • 2017年02月25日 18:50
  • 878

SpringBoot AOP统一处理请求日志

SpringBoot AOP统一处理请求日志有一天,项目经理老吴对小吴说:现在有这样一个需求:在SpringBootDemo01项目上的每个方法执行之前之后各打印一句话,例如:方法执行前打印如下内容:...
  • u010412719
  • u010412719
  • 2017年04月15日 11:01
  • 743

TensorFlow手写数字识别mnist example源码分析

TensorFlow手写数字识别mnist example源码分析
  • sunpeng19960715
  • sunpeng19960715
  • 2017年01月22日 22:22
  • 2000

MyBatis的Mapper接口以及Example的实例函数及详解

一、mapper接口中的方法解析mapper接口中的函数及方法 方法 功能说明 int countByExample(UserExample example) thorws SQLExcep...
  • biandous
  • biandous
  • 2017年03月24日 16:10
  • 14377

机器学习之决策树

一.决策树模型和学习 1.决策树定义 决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输...
  • panxiaoxie
  • panxiaoxie
  • 2017年06月26日 02:00
  • 237

mybatis generator利用example类的生成配置

  • fuck487
  • fuck487
  • 2016年08月19日 15:03
  • 3537

简单线性回归(Simple Linear Regression)问题和举例

简单线性回归(Simple Linear Regression)问题和举例 0. 前提介绍: 为什么需要统计量? 统计量:描述数据特征 0.1 集中趋势衡量 0.1.1均...
  • A784586
  • A784586
  • 2017年04月26日 17:13
  • 1371

[Ext JS 6 By Example 翻译] 第1章 – 入门指南

转载自:http://www.jeeboot.com/archives/1211.html 前言 本来我是打算自己写一个系列的 ExtJS 6 学习笔记的,因为 ExtJS 6 目前的中文学习资料还...
  • lovelyelfpop
  • lovelyelfpop
  • 2016年12月27日 11:11
  • 2911

mybatis的通用mapper的通用Example使用

mybatis的通用mapper的通用Example使用,当然也有不对应通用mapper的普通Example使用 想要偷懒不写mybatis里的一大堆mapper.xml文件,就想使用通用的Mapp...
  • y666666y
  • y666666y
  • 2017年04月17日 15:54
  • 499

优秀程序设计的Kiss原则(keep it simple,stupid)

良好的编程原则与良好的设计工程原则密切相关。本文总结的这些设计原则,帮助开发者更有效率的编写代码,并帮助成为一名优秀的程序员。 1.避免重复原则(DRY – Don’t repeat yours...
  • chenyiming_1990
  • chenyiming_1990
  • 2014年03月26日 20:44
  • 3981
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AOP Simple example
举报原因:
原因补充:

(最多只允许输入30个字)