第五章:Spring 源码解析与性能优化

第五章:Spring 源码解析与性能优化

5.1 Spring 源码解析

5.1.1 Spring IoC 容器的源码解析

核心类:DefaultListableBeanFactory

public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFactory
    implements ConfigurableListableBeanFactory, BeanDefinitionRegistry, Serializable {
    
    // 存储 Bean 定义的 Map
    private final Map beanDefinitionMap = new ConcurrentHashMap<>(256);
    
    // 获取 Bean 的方法
    @Override
    public Object getBean(String name) throws BeansException {
        return doGetBean(name, null, null, false);
    }

    // 核心的 Bean 获取逻辑
    protected  T doGetBean(
        final String name, @Nullable final Class requiredType,
        @Nullable final Object[] args, boolean typeCheckOnly) throws BeansException {

        // 省略部分代码...

        // 从缓存中获取 Bean
        Object sharedInstance = getSingleton(beanName);
        if (sharedInstance != null && args == null) {
            // 省略部分代码...
        } else {
            // 创建新的 Bean 实例
            bean = createBean(beanName, mbd, args);
        }

        // 省略部分代码...

        return (T) bean;
    }

    // 创建 Bean 的方法
    protected Object createBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) 
        throws BeanCreationException {

        // 省略部分代码...

        // 实例化 Bean

你可能感兴趣的:(Spring,java,spring,rpc)