SpringIOC框架详解
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框架详解的更多相关文章
- jQuery Validate验证框架详解
转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...
- mina框架详解
转:http://blog.csdn.net/w13770269691/article/details/8614584 mina框架详解 分类: web2013-02-26 17:13 12651人 ...
- lombok+slf4j+logback SLF4J和Logback日志框架详解
maven 包依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb ...
- [Cocoa]深入浅出 Cocoa 之 Core Data(1)- 框架详解
Core data 是 Cocoa 中处理数据,绑定数据的关键特性,其重要性不言而喻,但也比较复杂.Core Data 相关的类比较多,初学者往往不太容易弄懂.计划用三个教程来讲解这一部分: 框架详解 ...
- iOS 开发之照片框架详解(2)
一. 概况 本文接着 iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLib ...
- Quartz.NET作业调度框架详解
Quartz.NET作业调度框架详解 http://www.cnblogs.com/lmule/archive/2010/08/28/1811042.html
- mapreduce框架详解
hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感 ...
- iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)
本文链接:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-three.html 这里接着前文<iOS ...
- iOS 开发之照片框架详解
转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework.html 一. 概要 在 iOS 设备中,照片和视频是相当重 ...
随机推荐
- Spark的四种部署方式并对应四种提交方式
1 Local模式 本地模式 local模式 一台机器即可,开箱即用 不指定master,或者 --master local local[N] local[*] local模式下,使用 ...
- java伪代码 大道至简第一章
import.java.大道至简.*; //一·编程的精义 import.java.编程的精义.*; public class BIANCHENGDEJINGYI { if(愚公死了) 愚公的儿子,孙 ...
- GIT刷新忽略文件.gitignore
1.使用命令工具Git Bash,进入需要修改的工作目录.如C:/est 则输入 cd c:/test 2.重置所有缓存(注意后面有个.) git rm -r --cached . 3.重新添加(注意 ...
- Python Django 实用小案例2
动态导入模块 Django返回序列化数据 动态导入模块 在Django里面,经常会看到一些方法或者类是动态导入,尤其是以settings文件为代表,经常把一些类放在里面动态调配,比如随便拿Djang ...
- G - Galactic Collegiate Programming Contest Kattis - gcpc (set使用)
题目链接: G - Galactic Collegiate Programming Contest Kattis - gcpc 题目大意:当前有n个人,一共有m次提交记录,每一次的提交包括两个数,st ...
- Eclipse 各版本号
查看Eclipse版本号的方法:1.找到eclipse安装目录.2.进入readme文件夹,打开readme_eclipse.html.3.readme_eclipse.html呈现的第二行即数字版本 ...
- 列举两种不同类型的Java标识注释,并解释它们之间的区别。
列举两种不同类型的Java标识注释,并解释它们之间的区别.
- Trickbot展示新技巧:密码抓取器模块
Trickbot是一个简单的银行木马 来源 https://blog.trendmicro.com/trendlabs-security-intelligence/trickbot-adds-remo ...
- 【转】C++标准转换运算符reinterpret_cast
reinterpret_cast<new_type> (expression) reinterpret_cast运算符是用来处理无关类型之间的转换:它会产生一个新的值,这个值会有与原始参数 ...
- hibernate框架学习之使用SQLQuery查询数据
SQLQuery对象的获取 Hibernate支持使用原生SQL语句进行查询,通过session对象获得SQLQuery对象进行,需要传入SQL语句 SQLQuery createSQLQuery(S ...