// 用该Registry注册一个新定义的bean,但是新的bean必须支持父的定义和子的定义void registerBeanDefinition(String beanName, BeanDefinition beanDefinition)throws BeanDefinitionStoreException; // 给一个beanName移除掉BeanDefinitionvoid removeBeanDefinition(String beanName) throws NoSuchBean…
基本概念 BeanDefinitionRegistry ,该类的作用主要是向注册表中注册 BeanDefinition 实例,完成 注册的过程. 它的接口定义如下: public interface BeanDefinitionRegistry extends AliasRegistry { // 关键 -> 往注册表中注册一个新的 BeanDefinition 实例 void registerBeanDefinition(String beanName, BeanDefinition bean…
关于BeanDefinition见<Spring之Ⅰ:BeanDefinition> BeanDefinitionRegistry的类图: BeanDefinition 的注册接口,如 RootBeanDefinition 和 ChildBeanDefinition.它通常由 BeanFactories 实现,在 Spring 中已知的实现者为:DefaultListableBeanFactory 和 GenericApplicationContext.BeanDefinitionRegist…
目录 前言 正文 1.BeanDefinitionRegistry 简介 2.registerBeanDefinition 方法注册 Bean 最后 前言 上篇文章我们对 BeanDefinition 进行了讨论,BeanDefinition 是对 Bean 的定义,其保存了 Bean 的各种信息,如属性.构造方法参数.是否单例.是否延迟加载等.这里的注册 Bean 是指将 Bean 定义成 BeanDefinition,之后放入 Spring 容器中,我们常说的容器其实就是 Beanfacto…
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框架…
转自:http://my.oschina.net/HeliosFly/blog/203149 作者:GoodLoser. Spring MVC 解读---<context:component-scan/> 注解是骑士魂牵梦绕的美丽公主,也是骑士的无法摆脱的噩梦... 一.<context:component-scan/> 想必@Component,@Repository,@Service,@Controller几个常用的Type-Level的Spring MVC注解,大家都很清楚他…
一   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看作一个bean工厂或者ioc容器,它帮助我们负责对象的创建管理,以及对象间依赖关系的建立,还有其他的功能. 关于工厂的实现,一般来说与我们接触最多的就是BeanFactory和ApplicationContext两种实现方式,当然前者是所有实现的父类,ApplicationContext也是继承于它. BeanFactory,这种方式我们在代码里基本是不会用到的,因为它是面向spring框架本身的,而且提供的功能比较少,而ApplicationContext是面向开发者的,…
在前面博客中介绍什么是依赖注入时有提到:依赖注入是组件之间依赖关系由容器在运行期决定,即由容器动态的将某个依赖关系注入到组件之中.那什么是容器?既然Spring框架实现了IOC,那Spring中的容器是什么呢? 一.容器介绍在日常生活中容器是指用以容纳物料并以壳体为主的基本装置,它是用来盛放东西的.在编程中容器是用来存储和组织其他对象的对象,首先要确定容器也是对象,也可以当做bean,只是这个对象是用来存储和组织其他对象,那其他对象是什么呢?其他对象其实就是bean对象,这也是面向对象编程的一种…
1.IOC是什么 IOC-Inversion of Control,即"控制反转",不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制. DI-Dependency Injection,即"依赖注入":组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中.依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活.可扩展的平…
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…
引言 这个系列是我阅读Spring源码后的一个总结,会从Spring Framework框架的整体结构进行分析,不会先入为主的讲解IOC或者AOP的原理,如果读者有使用Spring的经验再好不过.鉴于每个人对源码阅读角度的不同,如果文中存在理解有误的地方希望读者能够及时提出,共同进步.文章所分析的源码基于5.0.8版本,但使用老版本理解起来问题也不大,因为在框架整体架构上变化并不多. 如果你使用Spring的时间足够长,相信在最初的开发过程中你一定使用过xml文件来加载各中bean.虽然现在基本…
spring ioc 容器的加载流程 1.目标:熟练使用spring,并分析其源码,了解其中的思想.这篇主要介绍spring ioc 容器的加载 2.前提条件:会使用debug 3.源码分析方法:Intellj idea debug 模式下源码追溯 通过ClassPathXmlApplicationContext 进行xml 件的读取,从每个堆栈中读取程序的运行信息 4.注意:由于Spring的类继承体系比较复杂,不能全部贴图,所以只将分析源码之后发现的最主要的类继承结构类图贴在下方. 5.关于…
前言 最近发了好几篇,都是覆盖框架源码,但是spring的代码,我是从没覆盖过,毕竟,如果方便扩展,没谁想去改源码,而spring就是不需要改源码的那个,真的是"对扩展开放,对修改关闭"的典范. 就我说曾经用过的,spring的扩展点,就包括了listener.beanFactoryPostProcessor.beanPostProcessor,而spring boot的扩展点,除了properties.yml.java config覆盖自动配置.org.springframework…
写在前面的话 相关背景及资源: 曹工说Spring Boot源码系列开讲了(1)-- Bean Definition到底是什么,附spring思维导图分享 工程代码地址 思维导图地址 工程结构图: 大体思路 选择bean definition实现类,并实例化bean definition 注册bean definition get bean查看是否work 选择bean definition实现类 这次,先说目的:我们要通过代码方式手动生成bean definition并注册到bean fact…
本文尝试分析一下Spring 的 ApplicationContext体系的 接口设计,尝试理解为什么这么做,为什么接口这么设计.为什么这么去实现,为什么需要有这个方法,为什么 这样命名?接口.类.方法的 大致用途是什么? 是否是最合理的?是否有完善的空间? 是否 让一个 同样顶级人才来设计,是否会得到一样的 设计和实现? 简称: BeanFactory 简称bf ApplicationContext 简称ac ServletContext 简称sc BeanDefinition 简称bd  …
Spring之BeanFactory源码分析(一) ​ 注意:该随笔内容完全引自https://blog.csdn.net/u014634338/article/details/82865644,写的很好,非常感谢,复制过来算是个积累,怕以后找不到. BeanFactory BeanFactory提供的是最基本的IOC容器的功能,BeanFactory 只是一个接口类,并没有给出容器的具体实现,当然,它有不同的实现类,来定义或者扩充某个功能.这篇文章的主角就是它啦. 启动IOC容器 下面是一段简…
1. AnnotationConfigApplicationContext功能 该类可以实现基于Java的配置类加载自定义在Spring的应用上下文的bean. 1.1 使用方式一:在构造方法中完成注册和刷新 AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MessageConfiguration.class); System.out.println(ctx.getBean("bean…
本文转自五月的仓颉 https://www.cnblogs.com/xrq730 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章将同步到我的个人博客: www.how2playlife.com 本文是微信公众号[Java技术江湖]的<Spring和SpringMVC源码分析>其中一篇,本文部分内容来源于网络,为了把本文主题讲得…
1 简介 我们常用的ClassPathXmlApplicationContext是AbstractRefreshableApplicationContext的子类,而DefaultListableBeanFactory类型的beanFactory又是AbstractRefreshableApplicationContext的一个成员属性,也就是说ClassPathXmlApplicationContext运用了组合的方式扩展了DefaultListableBeanFactory的功能,使其自身成…
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean Definition到底是什么,咱们对着接口,逐个方法讲解 曹工说Spring Boot源码(3)-- 手动注册Bean Definition不比游戏好玩吗,我们来试一下 曹工说Spring Boot源码(4)-- 我是怎么自定义ApplicationContext,从json文件读取bean de…
BeanFactoryPostProcessor 在前面几个章节,笔者有介绍过BeanFactoryPostProcessor,在spring在解析BeanDefinition之后,正式初始化bean之前,会回调我们编写的BeanFactoryPostProcessor接口,接口会传入beanFactory对象,我们可以新增或修改BeanDefinition.spring初始化bean一个典型的流程,就是根据我们标记在类上的@Component生成一个BeanDefinition,BeanDef…
本文不分析Spring的源码流程,只是介绍一些基础的概念,在阅读源码之前,我们应该首先明确研究的对象是什么,才能有的放矢. Spring作为BeanFactory, 和现实工厂有着许多类似之处. 需要各种原料Class,存在各个jar包内,jar包内又分为不同的Package. 每一种原料有相应的说明书------BeanDefinition 需要存储说明书的地方 BeanDefinitionRegistry 需要搬运工:BeanFactoryPostProcessor 需要按照说明书生产零件 …
一.BeanFactory的基本类体系结构(接口为主):…
7,自定义Spring框架 7.1 spring使用回顾 自定义spring框架前,先回顾一下spring框架的使用,从而分析spring的核心,并对核心功能进行模拟. 数据访问层.定义UserDao接口及其子实现类 public interface UserDao { public void add(); } public class UserDaoImpl implements UserDao { public void add() { System.out.println("userDao…
这个是接着上一篇来写,主要是这章内容比较多,还是分开来写吧! 一.AbstractBeanDefinition属性介绍 XML中的所有的属性都可以在GenericBeanDefinition中找到对应,GenericBeanDefinition只是子类实现,大部分通用的配置都在其父类AbstractBeanDefinition中定义,来看一下AbstractBeanDefinition中有哪些属性定义,因为我看的是spring5.0版本,和作者的版本应该不一样,这里是少了两个属性的就是scope…
<resultMaps> <resultMap id="FullResultMap" class="t_c_team_member_permission"> <result property="team_member_permission_id" column="team_member_permission_id"/> <result property="consultati…
java 继承使用关键字extends   继承的作用:减少代码量,优化代码 继承的使用注意点: 1子类不能继承父类的私有变量 2.子类不能继承父类的构造方法 3.子类在调用自己的构造方法时 会默认调用父类的无参构造方法 4.私有方法不能被继承 5.子类不能够继承不在一个包中默认权限的成员变量 为什么会调用非类的构造方法: 子类在创建对象的时候初始化非类的对象 Super:关键字  指向非类对象的引用空间 Super关键字的作用: 1.         当子类和父类存在同名的成员变量是,可以通过…