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.
Spring源码阅读(一)的更多相关文章
- Bean实例化(Spring源码阅读)-我们到底能走多远系列(33)
我们到底能走多远系列(33) 扯淡: 各位: 命运就算颠沛流离 命运就算曲折离奇 命运就算恐吓着你做人没趣味 别流泪 心酸 更不应舍弃 ... 主题: Spring源码阅读还在继 ...
- 初始化IoC容器(Spring源码阅读)
初始化IoC容器(Spring源码阅读) 我们到底能走多远系列(31) 扯淡: 有个问题一直想问:各位你们的工资剩下来会怎么处理?已婚的,我知道工资永远都是不够的.未婚的你们,你们是怎么分配工资的? ...
- Spring源码阅读-ApplicationContext体系结构分析
目录 继承层次图概览 ConfigurableApplicationContext分析 AbstractApplicationContext GenericApplicationContext Gen ...
- Sping学习笔记(一)----Spring源码阅读环境的搭建
idea搭建spring源码阅读环境 安装gradle Github下载Spring源码 新建学习spring源码的项目 idea搭建spring源码阅读环境 安装gradle 在官网中下载gradl ...
- Spring源码阅读笔记02:IOC基本概念
上篇文章中我们介绍了准备Spring源码阅读环境的两种姿势,接下来,我们就要开始探寻这个著名框架背后的原理.Spring提供的最基本最底层的功能是bean容器,这其实是对IoC思想的应用,在学习Spr ...
- Spring源码阅读 之 配置的读取,解析
在上文中我们已经知道了Spring如何从我们给定的位置加载到配置文件,并将文件包装成一个Resource对象.这篇文章我们将要探讨的就是,如何从这个Resouce对象中加载到我们的容器?加载到容器后又 ...
- 搭建 Spring 源码阅读环境
前言 有一个Spring源码阅读环境是学习Spring的基础.笔者借鉴了网上很多搭建环境的方法,也尝试了很多,接下来总结两种个人认为比较简便实用的方法.读者可根据自己的需要自行选择. 方法一:搭建基础 ...
- Spring源码阅读系列总结
最近一段时间,粗略的查看了一下Spring源码,对Spring的两大核心和Spring的组件有了更深入的了解.同时在学习Spring源码时,得了解一些设计模式,不然阅读源码还是有一定难度的,所以一些重 ...
- Spring源码阅读笔记
前言 作为一个Java开发者,工作了几年后,越发觉力有点不从心了,技术的世界实在是太过于辽阔了,接触的东西越多,越感到前所未有的恐慌. 每天捣鼓这个捣鼓那个,结果回过头来,才发现这个也不通,那个也不精 ...
- idea构建spring源码阅读环境
注:由于文章不是一次性完成,下文中的test1目录和test目录应为同一个目录. (一)安装git和Gradle Spring项目托管在github之上,基于Gradle来构建项目.所以要想搭建Spr ...
随机推荐
- 拦截器的作用之session认证登录和资源拦截
背景: 在项目中我使用了自定义的Filter 这时候过滤了很多路径,当然对静态资源我是直接放过去的,但是,还是出现了静态资源没办法访问到springboot默认的文件夹中得文件.另外,经常需要判断当前 ...
- 中文全文检索讯搜xunsearch安装
Xunsearch (迅搜)是一套免费开源的专业中文全文检索解决方案,简单易用而且 功能强大.性能卓越能轻松处理海量数据的全文检索.它包含后端索引.搜索服务程序和前端 脚本语言编写的开发工具包(称之为 ...
- Linux系统启动排错实验集合
Centos6系统启动流程 1. post 加电自检 检查硬件环境 2. 选择一个硬件类型引导启动 mbr 446字节 grub stage1 3. 加载boot分区的文 ...
- edraw的符号制作
1.选中要制作的符号,在"符号"->"保存符号",这将保存为两个文件,1个是ede,另一个是png文件. 2. 3.名称,提示,随意写,只要你明白什么意思 ...
- from C++ to Java
绝大部分对象都是指针,创建对象习惯性用new const -> final 枚举类型 与 int的相互转换: 从int到enum: MyEnum.values()[x], where x mu ...
- PHP数组和字符串的处理函数汇总
大部分数组处理函数array_chunk — 将一个数组分割成多个array_column — 返回数组中指定的一列array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的 ...
- 通过thriftserver的beeline/jdbc等方式连接到SparkSQL
thriftserver和beeline的简单配置和使用启动thriftserver: 默认端口是10000 ,可以修改 $ ./${SPARK_HOME}/sbin/start-thriftserv ...
- Centos7配置JAVA_HOME
Centos7配置JAVA_HOME http://blog.csdn.net/zzpzheng/article/details/73613838 在Centos7上,通过yum install ja ...
- 教你写Makefile(很全,含有工作经验的)
Makefile 值得一提的是,在Makefile中的命令,必须要以[Tab]键开始. 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了 ...
- C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作,无法为请求的 Configuration 对象创建配置文件。
应用程序配置文件,对于asp.net是 web.config,对于WINFORM程序是 App.Config(ExeName.exe.config). 配置文件,对于程序本身来说,就是基础和依据,其本 ...