Spring源码阅读(一)

Spring通过配置文件或者注解对类实例进行加载管理。稍微思考,可以猜测spring加载过程肯定先把配置转化为统一的配置对象,再把通过配置对象生产类实例。阅读源码,我们也可以发现这个逻辑。

spring配置对象类结构

spring实例生产工厂类结构

spring bean生产简单例子

例子中我们简单的使用AnnotatedGenericBeanDefinition读取spring注解配置,DefaultListableBeanFactory生产类实例。

package com.coshaho.learn.spring;

import org.springframework.beans.factory.annotation.AnnotatedGenericBeanDefinition;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.stereotype.Component;

/**
 * 
 * Spring注解读取.java Create on 2017年10月16日 下午11:07:02    
 *    
 * 类功能说明:   spring小例子
 *
 * Copyright: Copyright(c) 2013 
 * Company: COSHAHO
 * @Version 1.0
 * @Author coshaho
 */
@Component("coshaho")
public class Spring注解读取 
{
    public void sayHello()
    {
        System.out.println("Hello, Spring.");
    }
    
    public static void main(String[] args) throws Exception 
    {
        // 读取spring配置
        AnnotatedGenericBeanDefinition beanDefinition=new AnnotatedGenericBeanDefinition(Spring注解读取.class);
        System.out.println(beanDefinition.getMetadata().getAnnotationTypes());
        System.out.println(beanDefinition.isSingleton());
        System.out.println(beanDefinition.getBeanClassName()); 
        
        // 创建一个BeanFactory
        DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
        
        // 加载配置
        factory.registerBeanDefinition("coshaho", beanDefinition);
        
        // 生产实例
        Spring注解读取 spring = (Spring注解读取) factory.getBean("coshaho");
        spring.sayHello();
    }
}
[org.springframework.stereotype.Component]
true
com.coshaho.learn.spring.Spring注解读取
Hello, Spring.
原文地址:https://www.cnblogs.com/coshaho/p/7679499.html