1、SpringIOC是什么?

  就是一个用来管理实体类bean的容器

2、创建cppdy.xml文件(模拟springmvc.xml文件)

<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="user1" class="com.cppdy.UserTest">
<property key="name" value="cppdy" />
<property key="sex" value="boy" />
</bean>
<bean id="user2" class="com.cppdy.UserTest">
<property key="name" value="吹泡泡的魚" />
<property key="sex" value="男" />
</bean>
</beans>

3、创建SpringIOCDemo类(模拟SpringIOC获取bean)

package com.cppdy;

import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.List; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; class ApplicationResouceReader{
private String url; public ApplicationResouceReader(String url) {
this.url=url;
} public Object getBean(String id) throws Exception {
//获取到xml文件
InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream(url);
SAXReader saxReader = new SAXReader();
Document read = saxReader.read(resourceAsStream);
//解析xml,获取到beanId相同的节点
Element beans = read.getRootElement();
List<Element> beanList = beans.elements();
Element ele;
for (int i = 0; i < beanList.size(); i++) {
ele=beanList.get(i);
if(!ele.attributeValue("id").equals(id)) {
continue;
}
//拿到class全路径,方便之后反射
String beanClass=ele.attributeValue("class");
//反射出实体类
Class<?> forName = Class.forName(beanClass);
Object userInstance = forName.newInstance(); //获取当前符合id节点的属性列表
List<Element> attrsList = ele.elements();
//对属性进行赋值
for (int j = 0; j < attrsList.size(); j++) {
String key_zhi = attrsList.get(j).attributeValue("key");
Field declaredField = forName.getDeclaredField(key_zhi);
String value_zhi = attrsList.get(j).attributeValue("value");
declaredField.setAccessible(true);
declaredField.set(userInstance, value_zhi);
}
return userInstance;
}
return null;
}
} public class SpringIOCDemo { public static void main(String[] args) throws Exception {
ApplicationResouceReader arr=new ApplicationResouceReader("cppdy.xml");
UserTest bean = (UserTest) arr.getBean("user1");
System.out.println(bean.toString());
} }

SpringIOC框架详解的更多相关文章

  1. jQuery Validate验证框架详解

    转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...

  2. mina框架详解

     转:http://blog.csdn.net/w13770269691/article/details/8614584 mina框架详解 分类: web2013-02-26 17:13 12651人 ...

  3. lombok+slf4j+logback SLF4J和Logback日志框架详解

    maven 包依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb ...

  4. [Cocoa]深入浅出 Cocoa 之 Core Data(1)- 框架详解

    Core data 是 Cocoa 中处理数据,绑定数据的关键特性,其重要性不言而喻,但也比较复杂.Core Data 相关的类比较多,初学者往往不太容易弄懂.计划用三个教程来讲解这一部分: 框架详解 ...

  5. iOS 开发之照片框架详解(2)

    一. 概况 本文接着 iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLib ...

  6. Quartz.NET作业调度框架详解

    Quartz.NET作业调度框架详解 http://www.cnblogs.com/lmule/archive/2010/08/28/1811042.html

  7. mapreduce框架详解

    hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感 ...

  8. iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)

    本文链接:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-three.html 这里接着前文<iOS ...

  9. iOS 开发之照片框架详解

    转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework.html 一. 概要 在 iOS 设备中,照片和视频是相当重 ...

随机推荐

  1. CF920E Connected Components?

    CF luogu 先讲两个靠谱的做法 1.首先因为有n个点,m条不存在的边,所以至少存在一个点,和m/n个点之间没边,所以把这个点找出来,连一下其他相连的点,这样还剩m/n个点没确定在哪个联通块,而这 ...

  2. 2017CCPC秦皇岛 M题Safest Buildings&&ZOJ3993【复杂模拟】

    题意: 给出两个半径R,r,R表示第一次的大圈半径,r表示第二次的小圈半径.第一次大圈的圆心位于(0,0),第二次小圈的圆心未知,但在大圈内,给你一个n,然后给出n个屋子的位置,问这些屋子中,第二次在 ...

  3. 上架一台Cisco防火墙及其架构

    领导给小白两条线,分别是电源线和网线,去吧,机房上架一台防火墙... 额, 然后小白抱着防火墙就去了...

  4. steps/train_sat.sh

    <<LDA_MLLT_fMLLR三音素HMM的训练流程图.vsdx>>    

  5. Java创建文件和文件夹

    java代码: import java.io.*;//导入所需的包public class IOTest {//类 public static void main(String[] args){//主 ...

  6. java 基础 字符类型

    1.char类型的字面量可以是一个英文字母.字符或一个汉字,并且由单引号包括. 2.Java底层使用一个16位的整数来处理字符类型,该数值是一个字符的unicode编码值. unicode: 1.un ...

  7. MySql cmd下的学习笔记 —— 有关select的操作(max, min等常见函数)

    先把之前建的goods表找到 找到最贵的本店价(max) 找到最便宜的本店价(min) 查出一共还有多少商品(count) 查看商品价的平均价(avg) 查看本店有多少种商品 当count(*)时 输 ...

  8. WC2019 游记

    Day 0 早上奇迹般的六点半起床平常这时候我还没睡呢 早餐在武汉站吃了一碗28的番茄牛肉米线,结果上菜后我把所有非米线的固体(包括番茄和牛肉)全挑出去了 高二大佬:一个愿宰一个愿挨 在高铁上待了四个 ...

  9. go语言中的运算符^,&

    一.^运算符 1.作为二元运算符 ^作二元运算符就是异或,包括符号位在内,相同为0,不相同为1 规则:1^1 =0, 0^0=0,1^0=1,0^1=1 事例: (1)0001 0100 ^ 0000 ...

  10. 关于 DELPHI DATASNAP 的文章集

    关于 DELPHI  DATASNAP 的文章集: 1.墨者工作室  DataSnap基础 https://wenku.baidu.com/view/78715605cc1755270722088b. ...