zoukankan      html  css  js  c++  java
  • 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.
  • 相关阅读:
    react-native-开发环境搭建
    深入理解js中的立即执行函数(function(){…})()
    html-webpack-plugin详解
    window.getComputedStyle——ref
    react-hot-loader 的配置【局部刷新】--{create-react-app}
    es6 export、import
    echarts 金字塔
    JFinal源码详解
    如何使用JFinal开发javaweb
    MySQL如何修改密码
  • 原文地址:https://www.cnblogs.com/coshaho/p/7679499.html
Copyright © 2011-2022 走看看