6.1-AliasRegistry】的更多相关文章

AliasRegistry接口定义了alias的基本操作. package org.springframework.core; public interface AliasRegistry { //对指定的名称注册别名 void registerAlias(String name, String alias); //从当前容器移除指定别名 void removeAlias(String alias); //判断指定名称是否为别名 boolean isAlias(String beanName);…
死磕Spring源码之AliasRegistry 父子关系 graph TD; AliasRegistry-->BeanDefinitionRegistry; 代码实现 作为bean定义的最顶层接口,这个接口定义了管理别名的一些方法,主要作用是将名字-别名映射存到内存中.提供查找和校验的接口. public interface AliasRegistry { /** * 注册一个名字的别名 * @param name 定义名 * @param alias 需要注册的别名 * @throws Il…
Spring - 4.2.3 // 将一个name注册为一个别名aliasvoid registerAlias(String name, String alias);// 移除一个别名aliasvoid removeAlias(String alias);// 查看name是否注册过别名boolean isAlias(String name);// name注册过,就返回它的别名String[] getAliases(String name);最上层接口 实现类有 : SimpleAliasRe…
// 用该Registry注册一个新定义的bean,但是新的bean必须支持父的定义和子的定义void registerBeanDefinition(String beanName, BeanDefinition beanDefinition)throws BeanDefinitionStoreException; // 给一个beanName移除掉BeanDefinitionvoid removeBeanDefinition(String beanName) throws NoSuchBean…
Spring - 4.2.3 // name,alias存储容器 ConcurrentHashMap <alias,name>private final Map<String, String> aliasMap = new ConcurrentHashMap<String, String>(16);// 注册alias别名public void registerAlias(String name, String alias)1. 检查 name,alias 是否含有内容…
上一篇介绍了BeanFactory体系的所有接口——Spring源码分析——BeanFactory体系之接口详细分析,本篇就接着介绍BeanFactory体系的抽象类和接口. 一.BeanFactory的基本类体系结构(类为主): 上图可与 Spring源码分析——BeanFactory体系之接口详细分析 的图结合分析,一个以接口为主,一个以类为主(PS:Spring的体系结构要分析清楚,不得不曲线救国啊!不然27寸屏幕给我画估计都装不下.). 具体: 1.7层的类体系继承. 2.Abstrac…
Spring的BeanFactory的继承体系堪称经典.这是众所周知的!作为Java程序员,不能错过! 前面的博文分析了Spring的Resource资源类Resouce.今天开始分析Spring的IOC部分.众所周知,IOC是Spring框架最迷人的地方.它最重要的接口,就是BeanFactory了.BeanFactory有着庞大的继承.实现体系,有众多的子接口.实现类.本博文的目标就是抽丝剥茧,从源代码入手,分析Spring的实现和架构,从中进步. 在阅读的过程中,可以参照Spring文档来…
说到Spring框架,人们往往大谈特谈一些似乎高逼格的东西,比如依赖注入,控制反转,面向切面等等.但是却忘记了最基本的一点,Spring的本质是一个bean工厂(beanFactory)或者说bean容器,它按照我们的要求,生产我们需要的各种各样的bean,提供给我们使用.只是在生产bean的过程中,需要解决bean之间的依赖问题,才引入了依赖注入(DI)这种技术.也就是说依赖注入是beanFactory生产bean时为了解决bean之间的依赖的一种技术而已. 那么我们为什么需要Spring框架…
beans包中最核心的两个类:DefaultListableBeanFactory&XmlBeanDefinitionReader DefaultListableBeanFactory XmlBeanFactory继承自DefaultListableBeanFactory,而DefaultListableBeanFactory是整个bean加载的核心部分,是Spring注册及加载bean的默认实现,而对于XmlBeanFactory与DefaultListableBeanFactory不同的地方…
Spring源码之SimpleAliasRegistry解读(一) 阅读spring源码中org.springframework.core.SimpleAliasRegistry类时发现该类主要是使用map作为alias的缓存,并对接口AliasRegistry进行实现. 在阅读该源码中对hasAlias(String name, String alias):方法产生了疑惑.源码注释中解释该方法的作用是:确定给定的名称是否已注册了给定的别名. 该方法源码如下: public boolean ha…
转自:http://my.oschina.net/HeliosFly/blog/203149 作者:GoodLoser. Spring MVC 解读---<context:component-scan/> 注解是骑士魂牵梦绕的美丽公主,也是骑士的无法摆脱的噩梦... 一.<context:component-scan/> 想必@Component,@Repository,@Service,@Controller几个常用的Type-Level的Spring MVC注解,大家都很清楚他…
beanFactory的继承关系如下图所示: (图片来源:http://www.myexception.cn/software-architecture-design/925888.html) 在上节beanFactory的进化史,我们就讲到了上图的左边部分,这次我们来分析一下图的右边部分.AliasRegistry 是一个用于别名管理的通用接口,BeanDefinitionRegistry继承了该接口. SimpleAliasRegistry作为一个基类,实现了AliasRegistry接口.…
一   url-pattern的问题: <!-- No mapping found for HTTP request with URI [/WEB-INF/jsp/homePage.jsp] in DispatcherServlet with name 'dispatcher' 其中/和/*的区别: <url-pattern> / </url-pattern> 不会匹配到*.jsp,即:*.jsp不会进入spring的 DispatcherServlet类. <url-…
整体架构 打算开始写这个系列,不为上首页,也不为博取多少关注,只有一个目的:梳理知识,扩充思路:废话不多,开始吧.第一步,大家去spring的官方github下面去下载它的源码,具体的自己谷歌,我已经下下来了,然后spring的源码分为下面几个部分: 哈哈,大家是不是有一种头晕目眩的感觉,没事,我带你来分析源码,顺便给自己也做个总结.第一步是要理清楚各个层级关系之间的依赖,我把图画好,大家自己看看就好.所有的依赖都可以在gradle文件里面找到.为了效率,建议大家在idea里面下载一个插件,叫做…
我们常把spring看作一个bean工厂或者ioc容器,它帮助我们负责对象的创建管理,以及对象间依赖关系的建立,还有其他的功能. 关于工厂的实现,一般来说与我们接触最多的就是BeanFactory和ApplicationContext两种实现方式,当然前者是所有实现的父类,ApplicationContext也是继承于它. BeanFactory,这种方式我们在代码里基本是不会用到的,因为它是面向spring框架本身的,而且提供的功能比较少,而ApplicationContext是面向开发者的,…
(1).BeanFactory作为一个主接口不继承任何接口,暂且称为一级接口. (2).有3个子接口继承了它,进行功能上的增强.这3个子接口称为二级接口. (3).ConfigurableBeanFactory可以被称为三级接口,对二级接口HierarchicalBeanFactory进行了再次增强,它还继承了另一个外来的接口SingletonBeanRegistry (4).ConfigurableListableBeanFactory是一个更强大的接口,继承了上述的所有接口,无所不包,称为四…
本系列目录: Spring IOC(一)概览 Spring IOC(二)容器初始化 Spring IOC(三)依赖注入 Spring IOC(四)总结 目录 1.AbstractBeanFactory设计类图 2.模拟容器获取Bean,源码剖析 3.总结 =====正文分割线============= 前面一章讲解的高级容器ApplicationContext的接口设计和ClassPathXmlApplicationContext实现类从xml文件中载入bean的过程,其它实现类大同小异. 光生…
bean是Spring 最核心的东西,打个比方,假设Spring是一个水桶,那么bean就是水桶里的水,水桶离开水后,就没啥作用了.我们先来看一下bean的定义: public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int g…
在前面博客中介绍什么是依赖注入时有提到:依赖注入是组件之间依赖关系由容器在运行期决定,即由容器动态的将某个依赖关系注入到组件之中.那什么是容器?既然Spring框架实现了IOC,那Spring中的容器是什么呢? 一.容器介绍在日常生活中容器是指用以容纳物料并以壳体为主的基本装置,它是用来盛放东西的.在编程中容器是用来存储和组织其他对象的对象,首先要确定容器也是对象,也可以当做bean,只是这个对象是用来存储和组织其他对象,那其他对象是什么呢?其他对象其实就是bean对象,这也是面向对象编程的一种…
1.IOC是什么 IOC-Inversion of Control,即"控制反转",不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制. DI-Dependency Injection,即"依赖注入":组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中.依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活.可扩展的平…
一.首先分析AliasRegistry接口. 1.Alias别名,Registry注册表,AliasRegistry别名注册表接口. 2.共有四个方法,注册别名,判断是否别名,获取别名数组,移除别名. 3.我自己试着写了一个这个接口的实现类: package com.lzh.spring.test; import java.util.ArrayList; import java.util.Hashtable; import java.util.Iterator; import java.util…
Spring IOC(二)beanName 别名管理 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 一.AliasRegistry public interface AliasRegistry { void registerAlias(String name, String alias); void removeAlias(String alias); boolean isAlias(String name); St…
[转自 http://blog.csdn.net/u011179993 ]   目录(?)[+]   一. BeanDefinition及其实现类 BeanDefinition接口 这个接口描述bean的结构,对应XML中的< bean >或者配置类中的@Bean 它集成了BeanMetadataElement和AttributeAccessor,如下图  [AttributeAccessor接口] 类似于map,具有保存和访问name/value属性的能力 public interface…
beans包的层级结构 src/main/java:用于展现Spring的主要逻辑 src/main/resources:用于存放系统的配置文件 src/test/java:用于对主要逻辑单元进行测试 src/test/resources:用于存放配置测试用的文件 核心类介绍: 1.DefaultListableBeanFactory XmlBeanFactory继承自DefaultListableBeanFactory,而DefaultListableBeanFactory是整个Bean加载的…
DefaultSingletonBeanRegistry 这是 DefaultSingletonBeanRegistry 类的体系结构,由一个类一个责任的原则: AliasRegistry : 提供别名注册的接口 SimpleAliasRegistry : 它简单地实现了AliasRegistry接口. SingletonBeanRegistry : 提供单例bean注册的接口 DefaultSingletonBeanRegistry :它继承SimpleAliasRegistry类和实现了Si…
我们先来看类图吧: 除了BeanFactory这一支的接口,AbstractBeanFactory主要实现了AliasRegistry和SingletonBeanRegistry接口. 这边主要提供了这样的三个功能: 别名管理,单例创建与注册,工厂方法FactoryBean支持. 我们来看看这些接口,类的主要职责吧: BeanFactory Spring IOC容器的根接口 -- HierachicalBeanFactory 实现容器的继承,就是可以有父 BeanFactory -- -- Co…
摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 在上一篇文章中,我们熟悉了容器的基本用法.在这一篇,我们开始分析Spring的源码.但是在正式开始熟悉源码之前,有必要了解一下Spring中最核心的两个类. 1. DefaultListableBeanFactory XmlBeanFactory继承自DefaultListableBeanFactory,而DefaultListableBeanFactory是整个bean加载的核…
Spring的别名管理比较规范,有严格的接口规范,SimpleAliasRegistry实现 -> AliasRegistry接口,而且是线程安全的,Map也用的是ConcurrentHashMap,key是String,value是String,而且可以循环引用. mybatis的别名管理器是TypeAliasRegistry类,个人感觉有点不规范,可能是看Spring源码看多了,线程不安全,Map用的是普通的HashMap,key是String,value是Class<?>,没有循环…
主题 除了Spring 学习记录5 BeanFactory 里写的几个接口外,BeanFactory的实现类还实现了一些其他接口,这篇文章主要介绍这些接口和实现类. 结构 DefaultListableBeanFactory和它的父类们除了实现了BF的各种接口以外还实现了AliasRegistry和BeanDefinitionRegistry接口.而且不同等级的父类和BF的相关接口都有交集.. AliasRegistry 这个接口根据说明来看意思是提供别名注册的服务.虽然没有实际使用过别名,不过…
本文使用的代码是: Spring 3.0 接 触Spring也有很长一段时间了.但是,每次都是直接使用Spring直接提供的API,时间久了,自然也会想探索Spring里面的奥秘.今天上 午,整理出了Spring的BeanFactory的一个体系结构(当然不是完整的,是以XmlFactory为最终目标),如下图(点击可到图片页 面): 图下次补上. 沿着XmlBeanFactory向上追溯,可以形成上面的BeanFactory体系结构.虽然不是 很全面,但是如果这个图能理解透,我相 信,Spri…