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.
  • 相关阅读:
    爬虫基础1 怎么使用浏览器查看网络请求
    前端模块化总结(commonJs,AMD,CMD,ES6 Module)
    js强制类型转换规则
    vue-cli3中使用mxgraph的一些总结
    js概念笔记(this)
    js概念笔记(for循环,模块化)
    根据对象数组的某一属性排序
    从svg诞生的panda
    gulp笔记(从开发到发布)
    webpack4.x学习笔记
  • 原文地址:https://www.cnblogs.com/coshaho/p/7679499.html
Copyright © 2011-2022 走看看