Spring AOP创建BeforeAdvice和AfterAdvice实例
程序员文章站
2023-10-24 18:13:20
BeforeAdvice 1、会在目标对象的方法执行之前被调用。 2、通过实现MethodBeforeAdvice接口来实现。 3、该接口中定义了一个方法即before方法,before方法会在目标对象target之前执行。 AfterAdvice 1、在目标对象的方法执行之后被调用 2、通过实现A ......
beforeadvice
1、会在目标对象的方法执行之前被调用。
2、通过实现methodbeforeadvice接口来实现。
3、该接口中定义了一个方法即before方法,before方法会在目标对象target之前执行。
afteradvice
1、在目标对象的方法执行之后被调用
2、通过实现afterreturningadvice接口实现
实现目标:
在方法之前调用执行某个动作。
ihello 和hello:
public interface ihello {
public void sayhello(string str);
}
public class hello implements ihello {
@override
public void sayhello(string str) {
system.out.println("你好"+str);
}
}
saybeforeadvice:
public class saybeforeadvice implements methodbeforeadvice {
@override
public void before(method arg0, object[] arg1, object arg2) throws throwable {
// todo auto-generated method stub
system.out.println("在方法执行前做事情!");
}
}
sayafteradvice文件:
public class sayafteradvice implements afterreturningadvice {
@override
public void afterreturning(object arg0, method arg1, object[] arg2, object arg3) throws throwable {
// todo auto-generated method stub
system.out.println("在方法执行后做事情!");
}
}
applicationcontext.xml:
<?xml version="1.0" encoding="utf-8"?>
<!doctype beans public "-//spring//dtd bean 2.0//en"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- 建立目标对象实例 -->
<bean id="bean_hello" class="com.pb.hello" />
<!-- 创建执行前advice实例 -->
<bean id="sba" class="com.pb.saybeforeadvice" />
<!-- 创建执行后advice实例 -->
<bean id="sfa" class="com.pb.sayafteradvice" />
<!-- 建立代理对象 -->
<bean id="helloproxy" class="org.springframework.aop.framework.proxyfactorybean">
<!-- 设置代理的接口 -->
<property name="proxyinterfaces">
<value>com.pb.ihello</value>
</property>
<!-- 设置目标对象实例 -->
<property name="target">
<ref bean="bean_hello"/>
</property>
<!-- 设置advice实例 -->
<property name="interceptornames">
<list>
<value>sba</value>
<value>sfa</value>
</list>
</property>
</bean>
</beans>
main执行:
public static void main(string[] args) {
// todo auto-generated method stub
applicationcontext context=new classpathxmlapplicationcontext("applicationcontext.xml");
ihello hello=(ihello)context.getbean("helloproxy");
hello.sayhello("访客");
}
执行效果: