1.读取配置文件.xml
① 全局变量:
* List<BeanDefinition > beanDefins = new ArrayList<BeanDefinition > ();//其中BeanDefinition是自定义的类,它有两个String属性:id、className;和一个有参构造函数
* Map<String,Object> sigltons = new HashMap<String,Object>();
………………
② List<Element> beans = xpath.selectNodes(document);//获取文档下的所有bean节点
③ for(Element element : beans){
String id = element.attributeValue("id");//获取id属性值
String class = element.attributeValue("class");//获取class属性值
BeanDefinition beanDefin = new BeanDefinition(id,class);生成自定义类对象;(使用的是构造方法)
beanDefins.add(beanDefin);
}
2.实例化Bean对象
* for(BeanDefinition beanDefinition : beanDefins){
sigltons.put(beanDefinition.getId(),Class.forName(beanDefinition .getClassName()).newInstance());//实例化类并放在Map中
}
3.自定义getBean()方法:
Public Object getBean(String className){
return this.sigltons.get(className);
}
说明:
* Class.forName(beanDefinition .getClassName()).newInstance();通过反射进行类的实例化:先把beanDefinition .getClassName()转变成class对象,然后实例化对象;
4.对bean的属性注入值: ………………
* Method setter = properdesc.getWriterMethod();//获取属性的setter方法
if(setter != unll){
Object value = null;
if(propertyDenfinition.getRef()!=null&&"".equals(propertyDenfinition.getRef().trim())){
value = sigltons.get(propertyDenfinition.getRef());//ref时
}else{
value = ConvertUtils.convert(propertyDenfinition.getValue(),properdesc.getPropertyType());//不是ref时,即value时的类型转换
}
setter.setAccessiable(true);//如果在类中定义的setter方法是私有时,设置其可访问性
setter.invoke(bean,value);//把value的值注入到bean中
}
说明:propertyDenfinition是xml配置文件中的bean下的property的值(其中把所有的xml配置文件中的bean下的property的值都放在了集合中,propertyDenfinition是循环得到)
properdesc 是所定义的类(如实体类)中的属性(其中把所有所定义的类的属性都放在了集合中,properdesc是循环得到)
自定义BeanDefinition和PropertyDefinition类以配合存放xml中的信息
PropertyDefinition类专门用来存放xml中的节点中的属性名:如ref,name,其中propertyDenfinitions就是这类中定义的List<PropertyDefinition>属性:专门用了存放<property>的属性值
分享到:
相关推荐
spring工作原理.spring工作原理.
详解JSP 中Spring工作原理及其作用_.docx
声明性事务管理集成到应程序中。Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可该结构来管理异常处理和不同数据库供应商抛出的错误消息。
spring的工作原理以简介,可以比较清晰的认识spring.
主要介绍了Spring工作原理简单探索,涉及Springaop与IOC,动态代理静态代理,反射等相关内容,具有一定参考价值,需要的朋友可以了解下。
Spring框架是一个开放源代码的J2EE应用程序框架,是对bean的生命周期进行管理的轻量...Spring框架主要由七部分组成,分别是Spring Core,Spring AOP,Spring ORM,Spring DAO,Spring Context,Spring Web和Spring Web MVC。
Hibernate、Spring和Struts工作原理及使用理由
详解JSP 中Spring工作原理及其作用 1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 2.DispatcherServlet查询一个或多个HandlerMapping,找到...
spring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合
SpringSecurity框架的权限认证流程原理,请求到来时SpringSecurity如果调用层层过滤器来完成认证;
《Struts + Spring + Hibernate工作原理解析》文档,解析SSH框架的工作原理。
Spring事务原理、Spring事务配置的五种方式
spring mvc 工作原理
spring ioc容器初始化流程图 spring ioc容器依赖注入流程图 spring aop实现原理流程图
spring介绍,spring 原理,spring 入门,spring入门总结
本书从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从本书中参透Spring框架的优秀架构和设计思想,还能从Spring优雅的实现源码中一窥Java语言的精髓。本书在开篇...
《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从本书中参透Spring框架的出色架构和设计思想,还能从...
NULL 博文链接:https://zhang-yingjie-qq-com.iteye.com/blog/319927
Spring IOC原理,类的继承关系,依赖注入和控制反转等关系