`
visualcatsharp
  • 浏览: 41007 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个不错的开源动态代理类库

    博客分类:
  • .Net
阅读更多
从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缓存一类的应用,这里不多述
分享到:
评论
1 楼 sea7 2008-11-12  
visualcatsharp 写道

而castle是否开源就不太清楚了。


castle是开源的

相关推荐

    javassit实现动态代理解决代理必须要接口的缺憾

    Javaassist是一个开源库,它允许在运行时动态创建和修改Java类。在Java中,我们通常使用接口来实现动态代理,比如JDK的java.lang.reflect.Proxy类,但是这种方式要求目标对象必须实现至少一个接口。然而,Javaassist...

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    CGLIB(Code Generation Library)是一个开源的代码生成库,它允许运行时在内存中动态生成类和对象。 在Spring AOP中,我们通常使用@Aspect注解来定义切面类。切面类中可以包含多个通知(Advice),包括前置通知...

    动态代理-jdk、cglib、javassist.zip

    javassist是一个开源的分析、转换和操作Java字节码的库。相比于CGLIB,javassist提供了更高级的API,可以直接编辑类的字节码,而不仅仅是生成新的字节码。它不仅可以用作动态代理,还可以用于AOP(面向切面编程)和...

    动态代理

    这些库允许我们直接操作字节码,生成更灵活的代理类。 - `javassist`是一个流行的开源库,可以方便地创建、修改和分析Java类。它可以用来动态生成实现特定接口的类,并在方法调用中插入额外的代码。 - `ASM`是另一...

    cglib的动态代理需要的包

    CGlib(Code Generation Library)是Java编程语言中的一个开源项目,主要用于代码的动态生成。它在许多场景下被广泛使用,特别是在实现Java的动态代理机制时。动态代理是一种技术,允许我们在运行时创建一个对象的...

    java开源包6

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包9

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包8

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包10

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    webservice根据wsdl生成客户端代理类所需jar包

    例如,Apache CXF提供了一个叫做wsdl2java的工具,可以将WS-DL文件转换为Java源代码,其中包括客户端代理类。而JAX-WS则内置在Java SE 6及以上版本中,通过`wsimport`命令行工具也能实现相同的功能。 以下是生成...

    cglib动态代理.zip

    CGlib(Code Generation Library)是Java编程语言中的一个开源项目,它主要被用来提供高性能的代码生成服务。在Java世界中,动态代理是一种强大的技术,它允许我们在运行时创建对象的代理,以此来扩展或拦截对象的...

    cglib(动态代理)

    CGLib,全称为Code Generation Library,是一个强大的高性能的代码生成库,它在Java世界中被广泛应用,尤其是在动态代理和AOP(面向切面编程)领域。CGLIB是由Evan Schooler创建的一个开源项目,目前已被Apache软件...

    cglib,字节码生成库是生成和转换Java字节码的高级API。它被aop、测试、数据访问框架用来生成动态代理对象和拦截字段访问。.zip

    这个库最初由Evan Schooler创建,后来成为Apache软件基金会的一个项目,并且被广泛应用在各种开源框架中,如Spring AOP和Hibernate。CGlib的主要作用是通过字节码技术动态地生成新的类或对象,这些类通常作为代理来...

    前端开源库-werkzeug

    werkzeug是Python的一个强大且全面的Web开发工具包,它在前端开源库中扮演着重要角色,尤其在构建和管理HTTP服务器、处理HTTP请求和响应等方面。Werkzeug这个名字源于德语,意为“工具”,恰如其分地反映了这个库的...

    java开源包4

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    day39-Spring 04-CGLIB的动态代理

    在Java中,动态代理是一种在运行时创建代理类的能力,代理类可以代替原始的目标对象执行某些额外的操作。JDK提供了java.lang.reflect.Proxy类来实现基于接口的动态代理,但若目标对象不实现接口,JDK的动态代理就...

    Python_SuperAGI一个开源自主AI代理框架,使开发人员能够快速可靠地构建管理运行有用的自主代理.zip

    **Python_SuperAGI:一个开源自主AI代理框架** Python_SuperAGI 是一个专为开发人员设计的开源框架,其目标是简化和加速自主人工智能(AI)代理的构建、管理和执行过程。这个框架的核心理念是提供一个高效、可靠的...

    69.[开源][安卓][网络安全]NetCipher-master

    69.[开源][安卓][网络安全]NetCipher-master OnionKit是一个可以通过提供多种路径来提高移动应用网络安全的Android库项目。 该库具体提供: ...OrbotHelper:一个支持Orbot:Tor for Android应用集成的工具类。

    zbar动态链接库libZBarDecoder

    zbar是一个开源的二维码解码库,它支持多种二维码格式,包括QR Code、Code 128、EAN等。本文将详细介绍zbar动态链接库libZBarDecoder.so在Android平台上的应用及其相关知识。 libZBarDecoder.so是zbar库针对Android...

    java开源包1

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

Global site tag (gtag.js) - Google Analytics