手工方式实现Spring工厂创建对象
来源:互联网 发布:ubuntu安装桌面环境 编辑:程序博客网 时间:2024/06/06 00:49
Sping的主要功能就是省去了我们自己创建对象的麻烦,下面就用一个简单的例子,利用Java的DOM解析、反射机制简单实现Spring工厂。当然这是简单实现,没有实际spring工厂那么复杂。但是原理基本就是这样了。
1.在eclipse跟目录中创建我们所熟悉的beans.xml文件:我存放的路径为根目录。
<?xml version="1.0" encoding="UTF-8"?><beans><bean id="user" class="com.lwk.springbean.User"><property name="username" value="李卫康"></property><property name="password" value="123456"></property></bean></beans>
2.在com.lwk.springbean包路径下创建User类
package com.lwk.springbean;/*** @author 作者 E-mail:李卫康* @version 创建时间:2017年7月7日 下午1:52:23* 类说明*/public class User {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return username+":"+password;}}
3.在com.lwk.demo包路径下创建SpringBeanFactory.java文件
package com.lwk.springbean;import java.io.InputStream;import java.util.HashMap;import java.util.List;import java.util.Map;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;/*** @author 作者 E-mail:李卫康* @version 创建时间:2017年7月7日 下午1:50:24* 类说明:spring工厂类*/public class SpringBeanFactory {private static Map<String, Object> map=new HashMap<>();public static void main(String[] args) {init();}public static void init(){try {//1.加载配置文件(使用相对路径)InputStream in = SpringBeanFactory.class.getResourceAsStream("../../../beans.xml");SAXReader reader=new SAXReader();Document document = reader.read(in);//2.得到配置文件的根节点Element element = document.getRootElement();List <Element>elements = element.elements();for(Element e:elements){Attribute id = e.attribute("id");Attribute clazz = e.attribute("class");Class<?> bean = Class.forName(clazz.getText());User user = (User) bean.newInstance();List<Element> properties = e.elements();for(Element pro:properties){Attribute name = pro.attribute("name");Attribute value = pro.attribute("value");user.setUsername(name.getData().toString());user.setPassword(value.getData().toString());}map.put(id.getText(), user);}} catch (Exception e) {e.printStackTrace();}}public static Object getBean(String id){return map.get(id);}}
4.最后编写测试类
public class SpringDemo {public static void main(String[] args) {SpringBeanFactory.init();User user = (User) SpringBeanFactory.getBean("user");System.out.println(user.toString());}}
5.运行结果为:password:123456
阅读全文
0 0
- 手工方式实现Spring工厂创建对象
- Spring创建对象工厂功能的简单实现
- spring 托管 工厂创建对象
- Spring工厂方式创建Bean实例
- Spring 工厂方式 创建bean实例
- spring通过代理工厂创建代理对象
- Spring 手工装配对象
- Spring 研究spring创建对象的方式
- 使用DAO工厂创建实现类对象
- UITextField对象的手工创建
- spring 实现bean对象创建
- Spring中bean工厂创建bean的三种方式
- spring创建对象的方式(3种)
- 使用Spring创建对象的方式
- spring创建对象的几种方式
- spring容器创建bean对象的方式
- spring 手工实现AOP编程
- 手工实现spring的ioc
- 斐波纳契数列 oj39
- android byteBuffer的使用
- Eclipse很卡的解决方法
- Swift 资源库
- 题目:poj – 2395 (B题)
- 手工方式实现Spring工厂创建对象
- SlickEdit Pro(文本编辑器) v20.0.0.12 免费版
- UVA11059 Maximum Product
- VS中关于.h和.lib丢失的配置问题
- Service学习理解
- 解决myeclipse2014 中使用低版本的maven插件
- 绝对值排序 oj36
- 常见数据类型最值
- 编译apprtc 出现如下错误 File "./build/build_app_engine_package.py"