跳至主要內容

动态代理组件

小于 1 分钟

动态代理组件

介绍

FastChar核心组件,FastChar默认集成了 cglib 实现类的动态代理功能。

Cglib动态代理

如果开发者需要使用 Cglibopen in new window 作为动态代理解决方案,只要在项目中引用相应的客户端包即可。以maven项目为例,在pom.xml中加入如下引用:

<!-- https://mvnrepository.com/artifact/cglib/cglib-nodep -->
<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib-nodep</artifactId>
    <version>3.3.0</version>
</dependency>

使用Cglib动态代理

开发者可以通过 FastChar.getEnhancer(Class <T> targetClass) 方法快速便捷的使用类动态代理功能。如下:

TestEnhancer.java
    public static void main(String[] args) {

        //使用动态代理方法实例化TestUser对象
        TestUser testUser = FastChar.getEnhancer(TestUser.class)
                .addBeforeInterceptor(new IFastMethodInterceptor() {
                    @Override
                    public boolean intercept(Object o, Method method, Object[] objects) {
                        System.out.println("Before-开始执行方法:" + method.getName());

                        //返回false 不拦截,返回true 拦截
                        return false;
                    }
                })
                .addAfterInterceptor(new IFastMethodInterceptor() {
                    @Override
                    public boolean intercept(Object o, Method method, Object[] objects) {

                        System.out.println("After-执行方法结束:" + method.getName());

                        //返回false 不拦截,返回true 拦截
                        return false;
                    }
                })
                .create();

        //执行user对象里的方法
        testUser.info();

    }