import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.aop.framework.ProxyFactoryBean;
public class AopTest {
/**
* @param args
*/
public static void main(String[] args) {
//使用ProxyFactory
ProxyFactory proxyFactory = new ProxyFactory();
proxyFactory.addInterface(HelloWorld.class);
proxyFactory.addInterface(HelloChina.class);
proxyFactory.addAdvice(new LogAdvice());
proxyFactory.addAdvice(new TimeAdvice());
proxyFactory.setTarget(new HelloWorldImpl());
HelloWorld helloWorld = (HelloWorld) proxyFactory
.getProxy(AopTest.class.getClassLoader());
helloWorld.sayHelloWorld();
HelloChina helloChina = (HelloChina) proxyFactory
.getProxy(AopTest.class.getClassLoader());
helloChina.sayHelloChina();
//使用ProxyFactoryBean
ProxyFactoryBean pfb = new ProxyFactoryBean();
pfb.addInterface(HelloWorld.class);
pfb.addAdvice(new LogAdvice());
pfb.setTarget(new HelloWorldImpl());
HelloWorld helloWorldA = (HelloWorld) pfb.getObject();
helloWorldA.sayHelloWorld();
}
}
interface HelloWorld {
void sayHelloWorld();
}
interface HelloChina {
void sayHelloChina();
}
class HelloWorldImpl implements HelloWorld, HelloChina {
public void sayHelloChina() {
System.out.println("Hello China!");
}
public void sayHelloWorld() {
System.out.println("Hello World!");
}
}
/**
* 日志拦截器
*
* @author jin.xiong
*
*/
class LogAdvice implements MethodInterceptor {
public Object invoke(MethodInvocation methodinvocation) throws Throwable {
System.out.println("start " + methodinvocation.getMethod().getName());
Object ob = methodinvocation.proceed();
System.out.println("end " + methodinvocation.getMethod().getName());
return ob;
}
}
/**
* 时间拦截器
*
* @author jin.xiong
*
*/
class TimeAdvice implements MethodInterceptor {
public Object invoke(MethodInvocation methodinvocation) throws Throwable {
long start = System.currentTimeMillis();
Object ob = methodinvocation.proceed();
System.out.println("method proccess time "
+ (System.currentTimeMillis() - start));
return ob;
}
}
分享到:
相关推荐
HessianProxyFactory proxyFactory = new HessianProxyFactory(); // setting a user/password calls the web service with basic authentication proxyFactory.setUser("john"); proxyFactory.setPassword("doe"); ...
NULL 博文链接:https://wangxinchun.iteye.com/blog/2079585
自动从网上抓取免费代理,并对代理的可用性和匿名性进行检查,同时定时检查有效代理和无效代理,对于多次检查始终无效的代理,做放弃处理。同时检查函数可以自定义指定,用来针对不同的检查结果做出不同的React。...
2.4项目实战——第一个javaee应用:helloworld 28 2.4.1开始创建第一个javaee应用 28 2.4.2熟悉helloworld框架结构 29 本章小结 32 课后练习 32 第3章jsp和servlet 33 3.1开发第一个jsp+servlet应用 33 3.1.1...
1.ProxyFactory 基于 MethodBeforeAdvice、AfterReturningAdvice 利用 Spring Api 定义前、后置处理方法,并通过代理工厂类获取代理对象(代码或Xml配置实现) 2.ProxyFactoryBean 显式地设置 Advisors、Advice、...
NHibernate.ByteCode.LinFu 3.0.0.4000 NHibernate使用中框架动态代理方式 ...<property name="proxyfactory.factory_class"> NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu</property>
配合 LinFu.DynamicProxy 1.0.4.18998 NHibernate使用中框架动态代理方式 ...<property name="proxyfactory.factory_class"> NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu</property>
ProxyFactory 产生JDBC接口的代理实现. QueryLoader 属性文件加载器,主要用于加载属性文件中的 SQL 到内存中. QueryRunner 使用可插拔的策略执行SQL查询并处理结果集. ResultSetIterator 包装结果集为一个迭代器.
ProxyFactory.proxy 方法,生成接口的代理对象,直接调用方法客户端和服务器端的接口和实体类要一致,实体类必须是可以序列化的比如:定义Bean: public class DemoBean implements java.io.Serializable{ ...
一、AOP 概念 二、AOP 种类 三、Spring AOP 代理原理 四、Spring AOP 通知类型 五、Spring AOP Pointcut 六、Spring AOP 中的Advisor其实就是Aspect 七、AOP ProxyFactory 八、自动代理
使用ProxyFactory或ProxyFactoryBean实现计算器功能,同时(1)日志功能:在程序执行期间追踪正在发生的活动(打印出调用的方法,以及参数的参数值);(2)验证功能:希望计算器只能处理正数的运算,当有负数参与...
1.实现特定功能的方面代码在aop中又称为“通知(Advice)”包含 前置通知 后置通知 环绕...2.spring 采用代理的方式将通知织入到原bean中,将原bean和通知都封装到--org.springframework.aop.framework.ProxyFactory.
Spring Data Jpa应用程序API API1.1。 기본API가인터페이스상속하여사용 반스않고스스스스스스함함함... AOP倒影기술을활용함 ProxyFactory,反射,MethodInterceptor,JdkDynamicAopProxy,CGLib Spring数据Jpa소스를
基于Dubbo的ProxyFactory代理机制为服务接口生成代理对象。 基于Mysql,Redis乐观锁进行事务版本控制以及基于石英进行事务恢复。 支持各种事务日志序列化以及事务存储实现。 调用方式(版本):Dubbo,HTTP 业务场景...
PluracleOracle网络,以0形式启动自动Oracle,并非常容易地在区块链上公开链下... 可升级性每个oracle都是可升级的,它们都是使用zeppelinos ProxyFactory创建的。 可破坏性一旦Oracle死亡,它就会被破坏。 Oracle Re
服务代理层(Proxy):服务接口透明代理,生成服务的客户端存根和服务器端骨架,以ServiceProxy为中心,扩展接口为ProxyFactory。服务注册层(Registry):封装服务地址的注册与发现,以服务URL为
ProxyFactory 等常用工具。 Rover 处理框架的核心逻辑,主要接管请求关系映射,实现了对物理资源的隐式访问,并提供了黑名单机制以便开发者屏蔽关键资源,提供了表单验证组件 XForm 以及 Convertor 简化了以往表单...
使用BeanPostProcessor的Hello World示例 3.7.1.2. RequiredAnnotationBeanPostProcessor示例 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7.2.1. PropertyPlaceholderConfigurer示例 3.7.2.2. ...
Spring AOP源码02:ProxyFactory Spring AOP源码03:JdkDynamicAopProxy Spring AOP源码04:MethodInvocation 拦截器调用 Spring AOP源码05:DefaultAdvisorAutoProxyCreator Spring期末考压轴题:当Spring AOP遇上...
上文我们利用Spring rmi实现了Spring的远程访问(Spring 实现远程访问详解——rmi),本文主要讲解利用HttpInvoke实现远程访问。 ... 1. 远程访问流程 1) 服务端定义服务接口 2) 服务端实现服务接口 ...