CGLIB(Enhancer/FastClass/BulkBean) & spring容器初始化过程

本文探讨了CGLIB在Spring框架中的使用,包括Enhancer、FastClass和BulkBean组件,以及Spring容器的初始化过程。通过一个主测试类展示了BulkBean和FastClass的实际运用,并详细说明了BeanFactory后处理器以及AOP方法拦截的逻辑。同时,文中给出了BeanA类的定义,Spring的Bean配置文件和项目的依赖管理(POM文件)配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主测试类: (BulkBean、FastClass的使用测试代码没保存)

import net.sf.cglib.proxy.Callback;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Created by Administrator on 2014/11/25.
 */
public class Main {
    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext ctx =
                new ClassPathXmlApplicationContext(new String[]{"service.xml"});
        BeanA obj = (BeanA) ctx.getBean("beanA");
        System.out.println(obj);
        System.out.println(obj.getName());
    }

    public static class MyCallBack implements MethodInterceptor, Callback {
        @Override
        public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
            System.out.println("invoke method : " + method.getName());
            return methodProxy.invokeSuper(o, objects);
        }
    }

    public static Method[] getGetMethods(Class clazz) throws Exception {
        Field[] arr = getFields(clazz);
        Method[] methods = new Method[arr.length];
        for (int i = 0; i < arr.length; ++i) {
            String methodName = getMethodName("get", arr[i].getName());
            Method method = clazz.getMethod(methodName, new Class[]{});
            methods[i] = method;
        }
        return methods;
    }

    public static String[] getGetMethodNames(Class clazz) throws Exception {
        Field[] arr = getFields(clazz);
        String[] methods = new String[arr.length];
        for (int i = 0; i < arr.length; ++i) {
            Stri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值