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"); ...
在Spring框架中,AOP(面向切面编程)是一个核心特性,它允许我们在不修改代码的情况下,对程序的行为进行统一的管理和控制。`ProxyFactoryBean`是Spring AOP实现中的一个重要类,它用于创建代理对象,使我们能够...
这些实例通常会覆盖从基本的 HelloWorld 示例到更复杂的场景,如数据绑定、安全性和服务拦截器等。 1. **CXF的基本概念**: - **服务端点接口(SEI)**:这是定义Web服务操作的Java接口,是客户端和服务端交互的...
在Java编程领域,Spring框架是应用最广泛的IoC(Inversion of Control)和DI(Dependency Injection)容器之一。它提供了一种优雅的方式来管理对象的生命周期和依赖关系,并且还包含了强大的面向切面编程(AOP)支持...
服务消费阶段,消费者会从注册中心获取服务提供者的URL信息,然后通过Dubbo的ProxyFactory生成一个与服务接口匹配的代理对象。ProxyFactory是一个自适应扩展点,它可以根据配置或环境自动选择合适的代理实现,如...
private Object doPluginAll(ProxyFactory proxyFactory) { ... executorMethods.forEach(method -> { if (method.getName().equals("query")) { pluginMethods.add(method); } }); return proxyFactory....
自动从网上抓取免费代理,并对代理的可用性和匿名性进行检查,同时定时检查有效代理和无效代理,对于多次检查始终无效的代理,做放弃处理。同时检查函数可以自定义指定,用来针对不同的检查结果做出不同的React。...
String greeting = hello.sayHello("World"); System.out.println(greeting); // 输出: Hello, World ``` ### 总结 通过上述步骤,你已经在Java环境中成功地使用ICE 3.4.1构建了一个简单的SERVER和CLIENT应用,并将...
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...
String result = myService.doSomething("Hello, World!"); System.out.println(result); } } ``` 在上面的代码中,我们使用 HessianProxyFactory 创建了一个代理对象,然后调用了远程服务的 doSomething 方法,...
QNetworkProxyFactory *proxyFactory = new QNetworkProxyFactory(); QNetworkProxy proxy(QNetworkProxy::HttpCachingProxy, "your_proxy_host", your_proxy_port); proxy.setUser("your_username"); // 如果需要...
1.ProxyFactory 基于 MethodBeforeAdvice、AfterReturningAdvice 利用 Spring Api 定义前、后置处理方法,并通过代理工厂类获取代理对象(代码或Xml配置实现) 2.ProxyFactoryBean 显式地设置 Advisors、Advice、...
在这个例子中,`BankController` 使用 `proxyFactory` 作为其服务层的代理,`proxyFactory` 负责在目标对象 `bankService` 的方法调用前后添加额外的行为。 #### 六、结论 Spring AOP 通过提供一种灵活的方式来...
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 包装结果集为一个迭代器.
5. Weaving(编织):将切面应用到目标对象的过程,Spring AOP在运行时完成这个过程,通过ProxyFactory或ProxyFactoryBean。 二、AOP种类 1. 静态织入:在编译时完成,如AspectJ。 2. 动态织入:运行时进行,Spring...
Spring AOP的核心类包括`org.springframework.aop.framework.ProxyFactoryBean`、`org.springframework.aop.framework.ProxyFactory`、`org.springframework.aop.aspectj.autoproxy.AspectJAutoProxyCreator`等。...
在Java应用程序中,数据库连接管理是性能优化的关键环节之一。Proxool是一个轻量级的、开源的JDBC连接池,它提供了高效且灵活的数据库连接管理方案。Proxool允许开发者通过配置文件来设定连接池的参数,以满足不同...
ProxyFactory.proxy 方法,生成接口的代理对象,直接调用方法客户端和服务器端的接口和实体类要一致,实体类必须是可以序列化的比如:定义Bean: public class DemoBean implements java.io.Serializable{ ...