从codeproject里发现了一个非常不错的.net动态代理类库,有一个很好的特点是不仅支持接口代理,还支持非接口代理,关键是开源的。而castle是否开源就不太清楚了。
以下是我在事务处理中的应用。
public class DbTransactionProxy : IInterceptor
{
Object target = null;
private DbTransactionProxy(Object target)
{
this.target = target;
}
public static T NewInstance<T>(Object target)
{
return new ProxyFactory().CreateProxy<T>(new DbTransactionProxy(target));
}
#region IInterceptor 成员
object IInterceptor.Intercept(InvocationInfo info)
{
Object[] attrs = info.TargetMethod.GetCustomAttributes(typeof(TransactionAttribute), true);
object ret = null;
if (attrs != null && attrs.Length > 0)
{
TransactionAttribute trans = (TransactionAttribute)attrs[0];
if (trans.IsTransaction)
{
//开始事务处理
try
{
SessinoUtil.BeginTransaction(trans.ConnectionString);
ret = info.TargetMethod.Invoke(target, info.Arguments);
SessinoUtil.CommitTransaction(trans.ConnectionString);
}
catch(Exception ex)
{
SessinoUtil.RollbackTransaction(trans.ConnectionString);
}
}
}
else
{
ret = info.TargetMethod.Invoke(target, info.Arguments);
}
return ret;
}
#endregion
}
类似的,可以实现AOP缓存一类的应用,这里不多述
分享到:
相关推荐
Javaassist是一个开源库,它允许在运行时动态创建和修改Java类。在Java中,我们通常使用接口来实现动态代理,比如JDK的java.lang.reflect.Proxy类,但是这种方式要求目标对象必须实现至少一个接口。然而,Javaassist...
CGLIB(Code Generation Library)是一个开源的代码生成库,它允许运行时在内存中动态生成类和对象。 在Spring AOP中,我们通常使用@Aspect注解来定义切面类。切面类中可以包含多个通知(Advice),包括前置通知...
javassist是一个开源的分析、转换和操作Java字节码的库。相比于CGLIB,javassist提供了更高级的API,可以直接编辑类的字节码,而不仅仅是生成新的字节码。它不仅可以用作动态代理,还可以用于AOP(面向切面编程)和...
这些库允许我们直接操作字节码,生成更灵活的代理类。 - `javassist`是一个流行的开源库,可以方便地创建、修改和分析Java类。它可以用来动态生成实现特定接口的类,并在方法调用中插入额外的代码。 - `ASM`是另一...
CGlib(Code Generation Library)是Java编程语言中的一个开源项目,主要用于代码的动态生成。它在许多场景下被广泛使用,特别是在实现Java的动态代理机制时。动态代理是一种技术,允许我们在运行时创建一个对象的...
BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...
BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...
BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...
BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...
例如,Apache CXF提供了一个叫做wsdl2java的工具,可以将WS-DL文件转换为Java源代码,其中包括客户端代理类。而JAX-WS则内置在Java SE 6及以上版本中,通过`wsimport`命令行工具也能实现相同的功能。 以下是生成...
CGlib(Code Generation Library)是Java编程语言中的一个开源项目,它主要被用来提供高性能的代码生成服务。在Java世界中,动态代理是一种强大的技术,它允许我们在运行时创建对象的代理,以此来扩展或拦截对象的...
CGLib,全称为Code Generation Library,是一个强大的高性能的代码生成库,它在Java世界中被广泛应用,尤其是在动态代理和AOP(面向切面编程)领域。CGLIB是由Evan Schooler创建的一个开源项目,目前已被Apache软件...
这个库最初由Evan Schooler创建,后来成为Apache软件基金会的一个项目,并且被广泛应用在各种开源框架中,如Spring AOP和Hibernate。CGlib的主要作用是通过字节码技术动态地生成新的类或对象,这些类通常作为代理来...
werkzeug是Python的一个强大且全面的Web开发工具包,它在前端开源库中扮演着重要角色,尤其在构建和管理HTTP服务器、处理HTTP请求和响应等方面。Werkzeug这个名字源于德语,意为“工具”,恰如其分地反映了这个库的...
BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...
在Java中,动态代理是一种在运行时创建代理类的能力,代理类可以代替原始的目标对象执行某些额外的操作。JDK提供了java.lang.reflect.Proxy类来实现基于接口的动态代理,但若目标对象不实现接口,JDK的动态代理就...
**Python_SuperAGI:一个开源自主AI代理框架** Python_SuperAGI 是一个专为开发人员设计的开源框架,其目标是简化和加速自主人工智能(AI)代理的构建、管理和执行过程。这个框架的核心理念是提供一个高效、可靠的...
69.[开源][安卓][网络安全]NetCipher-master OnionKit是一个可以通过提供多种路径来提高移动应用网络安全的Android库项目。 该库具体提供: ...OrbotHelper:一个支持Orbot:Tor for Android应用集成的工具类。
zbar是一个开源的二维码解码库,它支持多种二维码格式,包括QR Code、Code 128、EAN等。本文将详细介绍zbar动态链接库libZBarDecoder.so在Android平台上的应用及其相关知识。 libZBarDecoder.so是zbar库针对Android...
BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...