Spring之AOP
来源:互联网 发布:汉化软件安卓版下载 编辑:程序博客网 时间:2024/06/13 21:19
代理:又分两种 又称为目标和通知
1:静态代理
接口:
package com.zking.Static;
public interface Artist {
public void shon();
}
Class:
package com.zking.Static;
public class Baoqiang implements Artist{
public void shon() { // TODO Auto-generated method stubSystem.out.println("来了................"); }
}
Class:
package com.zking.Static;
public class SongZhe implements Artist{
private Artist artist;public SongZhe(Artist artist) { // TODO Auto-generated constructor stub this.artist=artist;}public void shon() { // TODO Auto-generated method stub artist.shon();}
}
测试类:
package com.zking.testuu;
import org.junit.Test;
import com.zking.Static.Artist;
import com.zking.Static.Baoqiang;
import com.zking.Static.SongZhe;
public class TestArtist {
//静态调用@Testpublic void test() { Artist artist=new Baoqiang(); Artist songZhe=new SongZhe(artist); songZhe.shon();}
}
2:动态代理
接口:
package com.zking.dongtaidiaoyong;
public interface Artsit {
public void chang();
}
Class:
package com.zking.dongtaidiaoyong;
public class Liuyang implements Artsit{
public void chang() { // TODO Auto-generated method stub System.out.println("111111111.........");}public void tiao() { System.out.println("2222222.......");}
}
Class:
package com.zking.dongtaidiaoyong;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class LiuyanJingjir implements InvocationHandler{
private Artsit artsit;public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // TODO Auto-generated method stubObject object= method.invoke(artsit, args); return object;}public Artsit getArtsit() { return artsit;}public void setArtsit(Artsit artsit) { this.artsit = artsit;}public LiuyanJingjir(Artsit artsit) { super(); this.artsit = artsit;}
测试类:
package com.zking.testuu;
import java.lang.reflect.Proxy;
import org.ietf.jgss.Oid;
import org.junit.Test;
import com.zking.dongtaidiaoyong.Artsit;
import com.zking.dongtaidiaoyong.LiuyanJingjir;
import com.zking.dongtaidiaoyong.Liuyang;
/**
* 动态调用
* @author asus
*
*/
public class TestArtsit {
Artsit artsit=new Liuyang();LiuyanJingjir liuyanJingjir=new LiuyanJingjir(artsit);@Testpublic void test() { artsit=(Artsit) Proxy.newProxyInstance(Liuyang.class.getClassLoader(), Liuyang.class.getInterfaces(), liuyanJingjir); artsit.chang(); artsit.tiao();}
}
下面是spring的代理和通知
通知 又分3种 分别是 环绕通知,前置通知,和后置通知
接口:
package com.zking.spring;
public interface Atsity {
public void shuiXiaj ();public void gang();
}
目标: Class:
package com.zking.spring;
/**
* 目标
* @author asus
*
*/
public class Liuyangtamei implements Atsity{
public void shuiXiaj() { // TODO Auto-generated method stubSystem.out.println("111111..........."); }public void gang() { // TODO Auto-generated method stubSystem.out.println("2222222......"); }
}
环绕通知:
package com.zking.spring;
/**
* 环绕通知
*/
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class Liuyangtongz implements MethodInterceptor{
public Object invoke(MethodInvocation arg0) throws Throwable { // TODO Auto-generated method stub]arg0 Object o=arg0.proceed(); return o;}
}
前置通知:
package com.zking.spring;
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class QiangBazhi implements MethodBeforeAdvice{
public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable { // TODO Auto-generated method stub System.out.println("1111111");}
}
后置通知:
package com.zking.spring;
import java.lang.reflect.Method;
import org.springframework.aop.AfterReturningAdvice;
public class Houzhi implements AfterReturningAdvice{
public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable { // TODO Auto-generated method stub System.out.println("了.......");}
}
spring当然就是配置applicationContext.xml就好了
直接上代码的或出不来我也不知道为什么 只好贴图了
spring的测试:
package com.zking.testuu;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.zking.spring.Atsity;
public class TestSpring {
public static void main(String[] args) { new TestSpring().test();}private void test() { ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); Atsity atsity=(Atsity) applicationContext.getBean("myLiuyang");
// atsity.shuiXiaj();
atsity.gang();
}
}
好咯 这就是一个spring aop的简单操作
xx
- Spring之Spring AOP
- Spring AOP之aop:config
- Spring AOP之ThrowsAdvice
- Spring AOP之ThrowsAdvice
- Spring之AOP IOC
- Spring总结之AOP
- Spring总结之AOP
- Spring AOP之Jruby
- Spring AOP 之 AfterAdviceDemo
- Spring AOP 之 AfterAdviceDemo2
- Spring AOP 之 AfterAdviceDemo3
- Spring AOP 之 AroundAdviceDemo
- Spring AOP 之 AroundAdviceDemo2
- Spring AOP 之 AroundAdviceDemo3
- Spring AOP 之 BeforeAdviceDemo
- Spring AOP 之 BeforeAdviceDemo2
- Spring AOP 之 BeforeAdviceDemo3
- Spring AOP 之 ControlFlowDemo
- HDU 2467 Reward 拓扑排序
- 是时候了解一下Android 8.0 新特性了
- java对象转化为Map
- Java web中使用Log4j记录日志信息
- Python多进程编程
- Spring之AOP
- Java爬虫(一)--工程的构建
- jquery属性过滤选择器[attr=value]、[attr!=value]、[attr^=value]、[attr$=value]、[attr*=value]、[attr|=value]
- Maven构建SpringMVC环境报错“java.lang.ClassNotFoundException: org.springframework.web.servlet. DispatcherSe
- 解决VR中UGUI world space UI会被其他物体遮挡的问题
- centos源码安装Nginx问题解决
- hdu1041Computer Transformation(递推+大数模板)
- 【数据结构专题-03】树
- IndefiniteParameter