- 浏览: 580345 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (253)
- java (84)
- python (22)
- 设计模式 (12)
- 数据结构和算法 (7)
- ibatis (1)
- 数据挖掘 (2)
- 集体智慧读书笔记 (1)
- ubuntu (4)
- lucene (11)
- 算法 第4版 (11)
- apache mina (16)
- memcached (1)
- android (9)
- netty (6)
- mongodb (2)
- maven (2)
- openfire (2)
- 服务端 (21)
- 产品 (0)
- apache (1)
- 选择 (2)
- 构架WEB高性能站点 (7)
- redis (8)
- 诗词歌赋 (3)
- 源代码阅读 (5)
- 前端 (1)
- javascript (3)
- guice (1)
- 分布式 (5)
- 总结-2014 (4)
- jvm (1)
最新评论
-
liu_jiaqiang:
写的挺好
maven多项目管理 -
H972900846:
我想知道哪里整的,如果是自己写的,那有点牛呀如果是抄的请说明出 ...
SSL身份认证原理 -
春天好:
博主写的很好,赞一个,多谢分享 *(^-^*)分享一个免费好用 ...
定向网站爬虫---初级例子 -
fenglingabc:
经过测试,parameterType="java.u ...
mybatis获取主键和存储过程返回值 -
jyghqpkl:
[u][/u] ...
Cookie的secure 属性
IOC框架如果多,IOC用的如此多,真的懂的原理吗?
1:根据使用SPRING IOC 的经验
加载配置文件--------------解析beans.xm--------保存在map中---------反射生成对象;
配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans> <bean id="person" class="com.domain.Person"> </bean> <bean id="loginServce" class="com.servce.LoginServce"> <prooety name="person" ref="person"></prooety> </bean> </beans>
xml操作使用jdom操作;前面有介绍
package com.jdom.xml; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.SAXBuilder; public class IOCdomXml { private static IOCdomXml install = null; private IOCdomXml() { } public synchronized static IOCdomXml getInstall() { if (install == null) { install = new IOCdomXml(); } return install; } /** * map<id,Element>保存讀取出來的bean的id和对应的Element节点 */ public Map<String, Element> getBeanElement(String xmlPath) { Element root = getRootElement(xmlPath); // 得到所有的bean节点 List<Element> beanlist = root.getChildren("bean"); Map<String, Element> elmentMap = new HashMap<String, Element>(); for (Element bean : beanlist) { // 得到所有bean节点对象应的id String id = bean.getAttributeValue("id"); elmentMap.put(id, bean); } return elmentMap; } /** * map<String,map<String,Element>>保存每个bean中所依赖的对象节点 */ public Map<String, Map<String, Element>> getRefBeanElements(String xmlPath) { Map<String, Element> beanMap = getBeanElement(xmlPath); Map<String, Map<String, Element>> refMap = new HashMap<String, Map<String, Element>>(); Map<String, Element> propetyMap = new HashMap<String, Element>(); for (Map.Entry<String, Element> entry : beanMap.entrySet()) { String beanID = entry.getKey(); Element bean = entry.getValue(); List<Element> propetylist = bean.getChildren(); if (propetylist.size() > 0) { for (Element propety : propetylist) { String propertyID = propety.getAttributeValue("name"); propetyMap.put(propertyID, propety); refMap.put(beanID, propetyMap); System.out.println("propety------- " + propety.getName()); } } } return refMap; } public Element getRootElement(String xmlPath) { SAXBuilder sax = new SAXBuilder(); Document doc = null; try { doc = sax.build(IOCdomXml.class.getClassLoader().getResource( xmlPath)); } catch (JDOMException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return doc.getRootElement(); } }
测试xml读取的如下:
package com.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.jdom2.Element; import org.junit.Test; import com.jdom.xml.IOCdomXml; public class TestXml { @Test public void TestgetElementMap() { Map<String, Element> beanMap = IOCdomXml.getInstall().getBeanElement( "beans.xml"); System.out.println(beanMap.size()); for (Map.Entry<String, Element> entry : beanMap.entrySet()) { System.out.println("id---" + entry.getKey() + " class----" + entry.getValue().getAttributeValue("class")); } } @Test public void TestGetRefElements() { Map<String, Map<String, Element>> refMap = IOCdomXml.getInstall() .getRefBeanElements("beans.xml"); System.out.println(refMap.size()); Map<String, Element> propertyMap = new HashMap<String, Element>(); for (Map.Entry<String, Map<String, Element>> entry : refMap.entrySet()) { String beanID = entry.getKey(); propertyMap = entry.getValue(); System.out.println("property---" + propertyMap.size()); for (Map.Entry<String, Element> pentry : propertyMap.entrySet()) { System.out.println("id---" + pentry.getKey() + " class----" + pentry.getValue().getAttributeValue("ref")); } } } }
发表评论
-
protobuf-dt插件
2015-03-24 13:16 1423protobuf-dt: 安装前先安装xtext 可 ... -
java循环标签
2015-03-20 16:13 612今天看 源码的时候 看到 一个小语法 参考: ... -
java程序性能优化 --阅读
2014-10-14 17:56 710闲着,真实无聊; 发现一本好书《java程序性能优 ... -
jetty invalid entry CRC问题
2014-08-04 11:42 16141: http://stackoverflow.com/qu ... -
guice注入
2014-05-24 12:13 9451Google Guice3.0: http://code. ... -
eclipse快捷键
2014-05-21 16:01 5791: clrl+alt+r : 最常用,快速定位到文件 2 ... -
java clone
2014-05-16 17:04 528转:http://www.blogjava.net/ora ... -
ThreadLocal
2014-05-13 18:39 772简单介绍一下ThreadLocal的原理:1.Thread ... -
hession
2014-04-30 12:33 697一、首先先说Hessian是什么? Hessian:he ... -
冒泡和快速排序java
2014-04-19 18:01 7621: 冒泡最简单一种: /** * 算法效率o ... -
java生产者和消费者模型三种实现
2014-04-19 17:51 13691: 生产者和消费者的问题,生产者生产产品到缓冲区,消费者 ... -
单例模式
2014-03-14 16:06 750今天看到群里,关于单例模式的多线程下的安全问题: 1:最 ... -
freemarker的使用
2014-02-28 16:42 8421:freemarker eclipse插件安装方法:ht ... -
java 引用类型和内存泄露
2013-11-21 17:48 587http://blog.csdn.net/luoshenfu ... -
java泛型
2013-11-07 13:52 436Class<T>在实例化的时候,T要替换成具体 ... -
filter执行顺序
2013-10-12 11:16 1124多个筛选器的运行顺序取决于下列规则: 将 filt ... -
spring rmi远程调用
2013-09-09 11:48 11781:以前用jmi发布服务,实现分布式的一种方式,远程调用, ... -
spring mvc返回204状态码
2013-07-24 09:27 39291:204是没内容 不跳转的 代表请求成功的意思 ... -
editplus去掉多余空行
2013-07-19 21:05 7391: ^[ \t]*\n 用正则表达式替换 -
spring3 aop 使用详细
2013-06-06 11:10 01:目标:拦截所有的@Controller中的方法 ...
相关推荐
在本系列的第一篇【框架源码篇 01】中,我们将深入探讨Spring框架的核心组件——控制反转(Inversion of Control,简称IOC)。IOC是一种设计模式,它将对象的创建和管理职责从应用代码中解耦出来,转交给一个外部...
**Mvc5** 是ASP.NET MVC框架的第五个版本,是一个用于构建动态、数据驱动的Web应用程序的模型-视图-控制器(Model-View-Controller, MVC)框架。MVC5提供了更好的性能、更丰富的功能以及对现代Web技术(如HTML5、CSS...
针对读者的不同学习阶段,共分技术篇、实践篇与部署篇三大部分进行循序渐进地讲解。 本书为高性能Java EE应用开发人员提供一整套实用的主流开发技术,融入了作者多年的高性能Java EE应用开发经验。
标题 "我的IOC(一)" 暗示了这是一个关于控制反转(Inversion of Control,简称IOC)的系列文章的第一部分。IOC是软件设计模式中的一种,尤其在Java和.NET等面向对象编程语言中广泛使用,它将对象的创建和组装过程...
)】这篇文章深入浅出地解释了IoC(控制反转)这一核心的编程概念,特别是在Spring框架中的应用。IoC是Spring容器的基础,它支持AOP(面向切面编程)和声明式事务处理等功能。然而,IoC的概念往往难以直观理解,因为...
《Spring入门:Spring概述与Spring IoC》是针对初学者的一篇教程,旨在引导开发者进入Spring框架的世界。本文将深入探讨Spring的核心概念,特别是Spring的Inversion of Control(IoC,控制反转)特性,以及如何在...
Spring系列第1篇:为何要学spring?Spring系列第2篇:控制反转(IoC)与依赖注入(DI)。Spring系列第3篇:Spring容器基本使用及原理。Spring系列第4篇:xml中bean定义详解(-)Spring系列第5篇:创建bean实例这些方式...
Spring框架是Java开发中最常用的轻量级框架之一,它的核心技术主要围绕着控制反转(Inversion of Control,IoC)容器和面向切面编程(Aspect-Oriented Programming,AOP)展开。本篇文档将深入探讨这些核心概念以及...
### 2023最新版Java学习路线图-第6阶段大厂面试专题 #### Java学习路线概述 本文档提供了一份详细的2023年Java学习路径,旨在帮助那些希望在IT行业,尤其是大型互联网公司中寻找工作的Java开发者们更好地准备面试...
本篇我们将聚焦于C#实现的IOC(Inversion of Control,控制反转),即DI的一种形式,主要讲解如何自定义实现一个简单的IOC容器。 标题中提到的“C#实现IOC代码”通常指的是开发者为了理解和掌握DI原理,自己编写了...
### 高级软件人才培训专家-day14-SpringBoot原理篇 #### 一、配置优先级 在前几日的学习中,我们已经掌握了如何利用Spring Boot进行Web开发的基础技术,并了解了面向应用层面的开发方法。现在我们将进一步深入探讨...
第1篇 web开发基础篇 第1章 搭建开发环境 1.1 本书使用的软件和框架的版本 1.2 JDK6的下载与安装 1.3 Eclipse3.4 的下载与安装 1.4 MyEclipse6.5 的下载与安装 1.5 Eclipse:IDEforJavaEEDevelopers的下载与...
本资源是一篇关于学习和应用SSM框架(Spring、SpringMVC、MyBatis)的学习记录系列文章中的第六天内容,主题为初识Spring框架。 在这一部分中,你将了解到Spring框架的基本概念和使用方法,并通过实例探讨了Spring ...
第1篇 web开发基础篇 第1章 搭建开发环境 1.1 本书使用的软件和框架的版本 1.2 JDK6的下载与安装 1.3 Eclipse3.4 的下载与安装 1.4 MyEclipse6.5 的下载与安装 1.5 Eclipse:IDEforJavaEEDevelopers的...
【教学 - 入门篇】WebWork 2 是一篇针对初学者介绍WebWork框架的教程。WebWork是一个基于Java的Model-View-Controller (MVC) 框架,它提供了一系列强大的特性来帮助开发者构建高效、可维护的Web应用程序。 ### 主要...
第一个设计模式:依赖注入(DI) 依赖注入是 IOC 的一种常见形式,它是指在类之间的依赖关系不是通过硬编码,而是通过外部注入的方式来实现的。依赖注入的优点是可以降低类之间的耦合度,提高系统的灵活性和可维护...
本篇保姆级教程将带你深入理解这两个概念,结合源码分析,帮助你快速上手。 **自动配置(Auto-configuration)** 自动配置是Spring Boot的一大亮点,它基于条件注解(Conditional Annotations)来自动配置你的应用...
本篇文章将深入探讨如何在Android环境中自定义实现IoC,包括控件注入、布局注入和事件注入。 首先,我们来理解一下什么是控件注入。在传统的Android开发中,我们通常在Activity或Fragment中手动初始化UI控件,如...