学习spring中的advice的一个例子

[code]
package onlyfun.caterpillar;

public interface IHello {
public void hello(String name);
}
[/code]

[code]
package onlyfun.caterpillar;

public class HelloSpeaker implements IHello {

public void hello(String name) {
System.out.println("Hello, " + name);
}
}
[/code]

[code]

package onlyfun.caterpillar;

import java.lang.reflect.Method;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.aop.MethodBeforeAdvice;

public class LogBeforeAdvice
implements MethodBeforeAdvice {
private Logger logger =
Logger.getLogger(this.getClass().getName());

public void before(Method method, Object[] args,
Object target) throws Throwable {
logger.log(Level.INFO,
"method starts..." + method);
}
}

[/code]

[code]
package onlyfun.caterpillar;

import java.lang.reflect.Method;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.aop.AfterReturningAdvice;

public class LogAfterAdvice
implements AfterReturningAdvice {
private Logger logger =
Logger.getLogger( this.getClass().getName());

public void afterReturning(Object object,
Method method,
Object[] args,
Object target) throws Throwable {
logger.log(Level.INFO, "method ends..." + method);
}
}


[/code]
[code]
//测试类
package onlyfun.caterpillar;

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

public class SpringAOPDemo {
public static void main(String[] args) {
ApplicationContext context =
new FileSystemXmlApplicationContext("beans-config.xml");
IHello helloProxy = (IHello) context.getBean("helloProxy");
helloProxy.hello("penghao122");
}
}

[/code]

beans_config.xml

[code]

<bean id="logBeforeAdvice"
class="onlyfun.caterpillar.LogBeforeAdvice"/>

<bean id="logAfterAdvice"
class="onlyfun.caterpillar.LogAfterAdvice"/>

<bean id="helloSpeaker"
class="onlyfun.caterpillar.HelloSpeaker"/>

<bean id="helloProxy"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>onlyfun.caterpillar.IHello</value>
</property>
<property name="target">
<ref bean="helloSpeaker"/>
</property>
<property name="interceptorNames">
<list>
<value>logBeforeAdvice</value>
<value>logAfterAdvice</value>
</list>
</property>
</bean>
[/code]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值