- Spring的AOP部分
- AOP:面向切面的编程
- Aspect: (问题等的)方面,切面
- Orient: 适应
- Programing: 编程
- Java通过接口来实现AOP开发的功能
- org.springframework.aop包下
- MethodBeforeAdvice: 在主体方法执行之前来完成某项工作
- 实现方法 before()
- AfterReturningAdvice:在主体方法执行之后来完成某项工作
- 在org.springframework.aop.framework包下
- ProxyFactoryBean
- ----------------------------------
- 接口 IPlayer.java
- package test;
- public interface IPlayer {
- public String say(String name);
- }
- People.java
- package test;
- public class People implements IPlayer {
- public String say(String name) {
- return "Hello :" +name;
- }
- }
- DemoBefore.java:
- package test;
- import java.lang.reflect.Method;
- import org.springframework.aop.MethodBeforeAdvice;
- public class DemoBefore implements MethodBeforeAdvice {
- public void before(Method method, Object[] args, Object target)
- throws Throwable {
- System.out.println("------------");
- String temp=method.getName(); //得到方法名
- String arg1=(String)args[0]; //得到参数
- String tar=target.getClass().getName();
- System.out.println(tar+":"+temp+" "+arg1);
- }
- }
- DemoAfter.java:
- package test;
- import java.lang.reflect.Method;
- import org.springframework.aop.AfterReturningAdvice;
- public class DemoAfter implements AfterReturningAdvice {
- public void afterReturning(Object result, Method method, Object[] args,
- Object target) throws Throwable {
- String methodName=method.getName(); //得到方法名
- String res=result.toString(); //得到结果
- String uid= args[0].toString(); //得到参数
- System.out.println(methodName+"--"+res+"---"+uid);
- }
- }
- Test.java:
- package test;
- import org.springframework.context.*;
- import org.springframework.context.support.*;
- public class Test {
- public static void main(String[] args) {
- ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
- IPlayer temp=(IPlayer) ctx.getBean("pb");
- String str= temp.say("liming");
- System.out.println(str);
- }
- }
- beans.xml:
- <beans>
- <bean id="pe" class="test.People" />
- <bean id="demobe" class="test.DemoBefore" />
- <bean id="demoaf" class="test.DemoAfter" />
- <bean id="pb" class="org.springframework.aop.framework.ProxyFactoryBean" >
- <property name="proxyInterfaces" value="test.IPlayer" />
- <property name="target" ref="pe" />
- <property name="interceptorNames">
- <list>
- <value>demobe</value>
- <value>demoaf</value>
- </list>
- </property>
- </bean>
- </beans>
Spring AOP实例
最新推荐文章于 2023-08-05 16:34:42 发布