spring启动过程之源码跟踪(续beanfactory)--spring Debug
来源:互联网 发布:php datetime 时区 编辑:程序博客网 时间:2024/06/08 19:35
1.初始化过程
1 Resource res = new ClassPathResource("/applicationContext.xml"); 2 XmlBeanFactory factory = new XmlBeanFactory(res);
2.入门
1 /** 2 * Create a new XmlBeanFactory with the given input stream, 3 * which must be parsable using DOM. 4 * @param resource XML resource to load bean definitions from 5 * @param parentBeanFactory parent bean factory 6 * @throws BeansException in case of loading or parsing errors 7 */ 8 public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException { 9 super(parentBeanFactory);10 this.reader.loadBeanDefinitions(resource);11 }
3.读取配置文件XmlBeanDefinitionReader.java
1 public int loadBeanDefinitions(EncodedResource encodedResource) throws BeanDefinitionStoreException { 2 Assert.notNull(encodedResource, "EncodedResource must not be null"); 3 if (logger.isInfoEnabled()) { 4 logger.info("Loading XML bean definitions from " + encodedResource.getResource()); 5 } 6 7 Set currentResources = (Set) this.resourcesCurrentlyBeingLoaded.get(); 8 if (currentResources == null) { 9 currentResources = new HashSet(4);10 this.resourcesCurrentlyBeingLoaded.set(currentResources);11 }12 if (!currentResources.add(encodedResource)) {13 throw new BeanDefinitionStoreException(14 "Detected recursive loading of " + encodedResource + " - check your import definitions!");15 }16 try {17 InputStream inputStream = encodedResource.getResource().getInputStream();18 try {19 InputSource inputSource = new InputSource(inputStream);20 if (encodedResource.getEncoding() != null) {21 inputSource.setEncoding(encodedResource.getEncoding());22 }23 return doLoadBeanDefinitions(inputSource, encodedResource.getResource());24 }25 finally {26 inputStream.close();27 }28 }29 catch (IOException ex) {30 throw new BeanDefinitionStoreException(31 "IOException parsing XML document from " + encodedResource.getResource(), ex);32 }33 finally {34 currentResources.remove(encodedResource);35 if (currentResources.isEmpty()) {36 this.resourcesCurrentlyBeingLoaded.set(null);37 }38 }39 }
4.读取方法DefaultBeanDefinitionDocumentReader.java
1 /** 2 * Parses bean definitions according to the "spring-beans" DTD. 3 * <p>Opens a DOM Document; then initializes the default settings 4 * specified at <code><beans></code> level; then parses 5 * the contained bean definitions. 6 */ 7 public void registerBeanDefinitions(Document doc, XmlReaderContext readerContext) { 8 this.readerContext = readerContext; 9 10 logger.debug("Loading bean definitions");11 Element root = doc.getDocumentElement();12 13 BeanDefinitionParserDelegate delegate = createHelper(readerContext, root);14 15 preProcessXml(root);16 parseBeanDefinitions(root, delegate);17 postProcessXml(root);18 }
- spring启动过程之源码跟踪(续beanfactory)--spring Debug
- spring启动过程之源码跟踪(上)--spring Debug
- spring启动过程之源码跟踪(中)--spring Debug
- spring启动过程之源码跟踪(下)--spring Debug
- spring启动过程之源码跟踪(下)--spring Debug
- spring启动过程之源码跟踪(上)--spring Debug
- spring启动过程之源码跟踪(小结bean的生命周期)--spring Debug
- spring源码阅读(四)之BeanFactory
- Spring 源码阅读之BeanFactory
- Spring IoC源码之BeanFactory
- spring源码阅读之BeanFactory
- Spring Framework源码(一):spring beans之BeanFactory
- spring 核心与源码解析(1):IoC之BeanFactory
- Spring源码之ApplicationContext(三)加载BeanFactory
- Spring源码之ApplicationContext(五)激活BeanFactory
- Spring源码学习之BeanFactory接口简述
- Spring源码学习之BeanFactory和FactoryBean
- Spring源码阅读之-BeanFactory(一)
- 收缩事务日志
- spring启动过程之源码跟踪(上)--spring Debug
- spring启动过程之源码跟踪(中)--spring Debug
- c# webservice生成客户端及使用时碰到decimal类型时的特殊处理
- spring启动过程之源码跟踪(下)--spring Debug
- spring启动过程之源码跟踪(续beanfactory)--spring Debug
- spring启动过程之源码跟踪(小结bean的生命周期)--spring Debug
- JavaScript比较将变量变成数字类型比较大小
- 如何手动卸载 SQL Server 2005 实例(官方)
- spring aop小结(概念解析)
- Aop获取bean的过程---spring debug
- cxf 实例解读
- 项目经理原则(转载)
- spring aop实现过程之一代理对象的生成