XmlBeanDefinitionReader】的更多相关文章

接上篇[] ,我们看到BeanDefinitionReader解决的是从资源文件(xml,propert)到BeanDefinition集合的过程.所以BeanDefinitionReader接口有两个实现版本. BeanDefinitionReader的接口声明,ResourceLoader是spring中解决Resource加载的操作.四个loadBeanDefinitions就是重载解决单个或者多个资源文件的处理问题. loadBeanDefinitions 是加载BeanDefiniti…
XmlBeanDefinitionReader XML配置文件的读取是 Spring 中重要的功能,因为 Spring 的大部分功能都是以配置作为切入点的,那么我们可以从 XmlBeanDefinitionReader 中梳理一下资源文件读取.解析及注册的大致脉络,来看下各个类的功能. ResourceLoader: 定义资源加载器,主要用于根据给定的资源文件地址返回对应的 Resource. BeanDefinitionReader: 主要定义资源文件读取并转换为 BeanDefinition…
一.DefaultListableBeanFactory类, 里面有一个成员变量beanDefinitionMap,Bean定义对象的Map, BeanDefinition就对应XML的属性配置 /** Map of bean definition objects, keyed by bean name */ private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<String…
Spring 加载资源并装配对象过程 在Spring中对XML配置文件的解析从3.1版本开始不再推荐使用XmlBeanFactory而是使用XmlBeanDefinitionReader. ClassPathResource resource = new ClassPathResource("bean.xml"); DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); XmlBeanDefiniti…
今天遇到一个这样的错误,这个错误是说我的spring的框架的文档没有写正确.但是反复检查,文档没有错误,原因是我使用了自己只做的user library,而且使用了 下边的System library对话框选择了对号,所以使得spring报错,这个项目建立的是Java项目,而不是web项目,所以出现这个错误,把复选框去掉,错误就消失了. user library详见myeclipse的user library使用方法 - 北极的大企鹅 - 博客园 http://www.cnblogs.com/l…
花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别人总结出来的东西,看一遍可以发现自己的理解偏差,而且还可以看到一些平时不太关注的内容,当然看也可以是一种学习技术的方式. 最开始只是想了解一下AOP,没想到就陷的这么深,为了搞清楚spring是如何完成切面功能这两天还是把Ioc部分的内容也给读了读.还是看懂了大概,只不过这复杂的内部结构确实不易理解…
现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要内容分为: 1.Maven多模块项目的创建: 2.Maven与SpringMVC的整合: 3.Dubbo的环境配置及与整合: 4.新手在整合过程易犯的错误. 通过一个简单的demo来说明,大家多多指教,分享经验! 一.Maven多模块项目的创建 我们需要建立一个多模块的maven项目,其目录结构为…
我们知道Spring的IoC起到了一个容器的作用,其中装得都是各种各样的Bean.同时在我们刚刚开始学习Spring的时候都是通过xml文件来定义Bean,Spring会某种方式加载这些xml文件,然后根据这些信息绑定整个系统的对象,最终组装成一个可用的基于轻量级容器的应用系统. Spring IoC容器整体可以划分为两个阶段,容器启动阶段,Bean实例化阶段.其中容器启动阶段主要包括加载配置信息.解析配置信息,装备到BeanDefinition中以及其他后置处理,而Bean实例化阶段主要包括实…
首先我们先来看看如下一段代码 ClassPathResource resource = new ClassPathResource("bean.xml"); DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory); reader.loadBeanDefinitio…
IOC:Inversion of Control(控制反转).IOC它所体现的并不是一种技术,而是一种思想,一种将设计好的对象交给容器来管理的思想.IOC的核心思想就体现在控制.反转这两个词上面,要理解就必须要理解几个问题: 1.谁控制谁?在传统的开发工作中,我们一般都是主动去new一个对象,这个是主动控制依赖对象.但是对于IOC而已,控制权会被移交给容器,所以应该是IOC容器控制对象. 2.控制什么?既然是IOC容器控制对象,那控制什么呢?IOC容器除了负责控制对象的生成还包括外部资源的获取.…
Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring容器.这里,我们讲的也是 ApplicationContext中Bean的生命周期.而实际上BeanFactory也是差不多的,只不过处理器需要手动注册. 转载请注明地址 http://www.cnblogs.com/zrtqsk/p/3735273.html,谢谢. 一.生命周期流程图: Spri…
SpElUtilTest.testSpELLiteralExpressiontestSpELLiteralExpression(cn.zr.spring.spel.SpElUtilTest)org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 9 in XML document from class path resource [spring-beans.xml] is invalid; neste…
一.AOP实现 Spring代理对象的产生:代理的目的是调用目标方法时我们可以转而执行InvocationHandler类的invoke方法,所以如何在InvocationHandler上做文章就是Spring实现Aop的关键所在.Spring的代理类正是继承了Factory Bean的ProxyFactoryBean,ProxyFactoryBean之所以特别就在它可以让你自定义对象的创建方法.当然代理对象要通过Proxy类来动态生成.下面是Spring创建的代理对象的时序图:Spring创建…
一.BeanDefinition BeanDefinition是配置文件<bean>元素标签在容器中内部表示形式.创建最终的BeanDefinition主要包括两个步骤: 1)利用BeanDefinitionReader对配置信息Resource进行读取,通过XML解析器解析配置信息的DOM对象,简单地为每个<bean>生成对应的BeanDefinition对象.但是这里生成的BeanDefinition可能是半成品,因为在配置文件中,我们可能通过占位符变量引用外部属性文件的属性,…
Java中,不同来源的资源抽象成URL,通过注册不同的handler(URLStreamHandler)来处理不同来源的资源的读取逻辑.一般handler的类型使用不同的前缀(协议,protocal)来识别,如:"file:"."http:"."jar:"等.   对于Spring,URL没有定义相应的,如"classpath:"的handler,定义也相对麻烦,Spring对配置文件的读取做了相应的封装,通过Resource…
使用SpringMVC的过程中需要访问静态文件,即在spring-servlet.xml文件中添加了 <mvc:default-servlet-handler /> 标签,以开启SpringMVC对静态文件的拦截处理方法 重启Tomcat,出现如下报错 2016-05-06 03:18:47 ERROR [main] org.springframework.web.servlet.DispatcherServlet - Context initialization failed org.spr…
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545; min-height: 14.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px;…
记录一下: org.springframework.context.support.AbstractApplicationContext prepareRefresh Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@7cef4e59: startup date [Fri Sep 30 09:33:28 CST 2016]; root of context hierarchy org.spr…
例子: bean.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.spri…
出错::  ContextLoader:215 ERROR - Context initialization failed org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [applicationContext.xml]; nested exception is java.lang.I…
一.代码实例 在我们分析spring的IOC源码的时候,发现除了配置标准的bean,并且通过getBean(beanName)的方法获取到一个bean的实例外,似乎还有这不少其他获取的方法,例如在第四节,我们发现得到bean实例后,在第26节,会判断是否继承了FactoryBean,然后调用它的方法获取真实的bean,在配置文件中我们发现一个factory-bean方法,这些都说明,我们应该可以使用一个beanFactory获取一个bean,此节重点讨论这部分的实现. 代码如下: 1.car类…
一.代码例子 此节开始涉及到一个bean具体生成和保存的过程,仅仅涉及到最简单的bean,代码依旧是最简单的 public static void main(String[] args) { DefaultListableBeanFactory beanFacory=new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(beanFacory); reader.loa…
一.环境准备 对于学习源码来讲,拿到一大堆的代码,脑袋里肯定是嗡嗡的,所以从代码实例进行跟踪调试未尝不是一种好的办法,此处,我们准备了一个小例子: package com.zjl; public class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public void sayHello…
1. Caused by: java.lang.reflect.MalformedParameterizedTypeException 或 Caused by: java.lang.NoSuchMethodError: org.springframework.beans.factory.BeanFactory.getBean 启动时报错,原因是dubbo 依赖 spring 2.5.6.SEC03,而我项目中有用spring 3.2.4.RELEASE,所以导致冲突. 在maven中把dubbo…
AOP,面向切面编程,作为OOP的一种补充,在处理一些系统共有的业务,比如日志,事务等,提供了一种比OOP更佳的解决方案. 在OOP中,控制的粒度为对象,因此,对象中也就参杂这不属于本身业务主体的一下系统共有的业务: 登陆提供了如下接口: package me.hockey.spring.aoptest; public interface ILogin { String loginByname(String name); } 例如以一个简单的硬编码的登陆为例子,在未使用AOP前纪录日志的工作都是…
Spring IOC设计原理解析:本文乃学习整理参考而来 一. 什么是Ioc/DI? 二. Spring IOC体系结构 (1) BeanFactory (2) BeanDefinition 三. IoC容器的初始化 1. XmlBeanFactory(屌丝IOC)的整个流程 2. FileSystemXmlApplicationContext 的IOC容器流程 1.高富帅IOC解剖 2. 设置资源加载器和资源定位 3.AbstractApplicationContext的refresh函数载入…
spring boot提供了sample程序,学习spring boot之前先跑一个最简单的示例: /* * Copyright 2012-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * Y…
谁没掉进过几个大坑 记得好久之前,总能时不时在某个地方看到一些标语,往往都是上面一个伟人的头像,然后不管是不是他说的话,下面总是有看起来很政治正确且没卵用的屁话,我活到目前为止,最令我笑的肚子痛得是下面这段标语. 态度决定高度,思路决定出路,细节决定成败,环境决定心境,格局决定结局. 没错,这是一个干过传销的朋友告诉我的. 我来就讲讲思路 上一篇从零开始学 Java - Spring MVC 实现跨域资源 CORS 请求 中使用简单的配置后即可实现跨域请求,但是,我在走向配置成功的路上由于我瞎,…
出现错误的原因是消费端war没有启动成功, 但是zkClient和Dubbo的对应Thread启动了, web container无法加载对应的类, INFO: Initializing ProtocolHandler ["http-bio-8081"] Jun , :: PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-8010"] Jun…