上一篇中用XMLSchema配置方式介绍了简单日志实现,这里再用annotation来介绍
(注意是spring2.0)
来看接口,这个接口简单的不能再简单了,嘻嘻。
public interface Hello {
String hello(String name);
}
实现类:
public class SayHello implements Hello {
public String hello(String name) {
String result = "---hello " + name;
System.out.println(result);
return result;
}
}
切面,里面采用了annotation来注释,也说明了大概意思:
/*
* Create Date:2008-11-20 下午03:09:11
*
* Author:dingkm
*
* Version: V1.0
*
* Description:对进行修改的功能进行描述
*
*
*/
//首先这是注释这个类就是切面
@Aspect
public class MyAspect {
//这里是注释要切入的方法,AfterReturning是表示方法返回以后进行切入,我这里
//选这个的话是因为日志一般都是在方法执行完成后记录,当然你可以拿Before来试
@AfterReturning("execution(* *.aspectJ.*.hello(..))")
public void doLog(ProceedingJoinPoint joinpoint) throws Throwable{
String result = (String)joinpoint.proceed();
System.out.println("---doLog"+result);
}
}
下面是spring配置文件,这里的配置文件就比较简单了:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">
<!--基于@AspectJ切面的驱动器,如果没有这句话 切面的代码是不会执行的,可以试下-->
<aop:aspectj-autoproxy/>
<!--这个bean是作为切面 -->
<bean id="myAspect" class="spring2aop.aspectJ.MyAspect"></bean>
<!--要织入代码的bean-->
<bean id="hello" class="spring2aop.aspectJ.SayHello"></bean>
</beans>
<aop:aspectj-autoproxy/>这句很关键哦
再来看测试类:
public class Test {
/**
* @Description 方法实现功能描述
* @param args
* void
* @throws 抛出异常说明
*/
public static void main(String[] args) {
ApplicationContext act = new ClassPathXmlApplicationContext(
"applicationContext21.xml");
Hello h = (Hello)act.getBean("hello");
h.hello("laoding");
}
}
看看结果:
---hello laoding
---hello laoding
---doLog---hello laoding
---hello laoding这个与上一篇文章中提到的道理一样,因为记录日志要取得返回结果,所以执行了两次
最后的那句就是我们要的,这样就达到了记录日志的目的,哈哈,收工回去看PPS中韩魔兽对抗。
posted on 2008-11-25 18:27
老丁 阅读(1721)
评论(0) 编辑 收藏 所属分类:
spring