Java仿Spring框架IOC控制反转利用反射简单实现(源码)
来源:互联网 发布:js去掉最后几个字符 编辑:程序博客网 时间:2024/05/16 16:24
效果:
xml配置文件:
运行效果:(对象为单例)
实现思路:
1.创建实体类
Student.java
package com.bean;public class Student {private int id;private String name;private String sex;private int age;private String hobby;public Student() {super();// TODO Auto-generated constructor stub}public Student(int id, String name, String sex, int age, String hobby) {super();this.id = id;this.name = name;this.sex = sex;this.age = age;this.hobby = hobby;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getHobby() {return hobby;}public void setHobby(String hobby) {this.hobby = hobby;}}
User.java
package com.bean;public class User {private int _id;private String username;private String password;public User() {super();// TODO Auto-generated constructor stub}public User(String username, String password) {super();this.username = username;this.password = password;}public int get_id() {return _id;}public void set_id(int _id) {this._id = _id;}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;}}
2.在工程根目录新建xml配置文件beans.xml
<?xml version="1.0" encoding="UTF-8"?><beans><bean id="student" class="com.bean.Student"></bean><bean id="user" class="com.bean.User"></bean></beans>
3.核心工具类:
①Dom4j解析beans.xml,将id和class属性值保存进对象Bean
Bean类:
package com.bean;public class Bean {private String id;private String clazz;public Bean() {super();// TODO Auto-generated constructor stub}public Bean(String id, String clazz) {super();this.id = id;this.clazz = clazz;}@Overridepublic String toString() {return "Bean [id=" + id + ", clazz=" + clazz + "]";}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getClazz() {return clazz;}public void setClazz(String clazz) {this.clazz = clazz;}}
解析xml:(需要jar包dom4j)
// 获取所有xml中的所有beanpublic void getBeans() {list = new ArrayList<Bean>();// 1创建dom4j的SAX解析SAXReader sr = new SAXReader();// 2加载xml文件获取dom4j的Document对象System.out.println("getBeans:" + file.getName());try {Document document = sr.read(file);// 3获取根元素Element root_element = document.getRootElement();List<Element> bean_list = root_element.elements("bean");for (Element element : bean_list) {String id = element.attributeValue("id");String clazz = element.attributeValue("class");Bean bean = new Bean(id, clazz);list.add(bean);}for (Bean bean : list) {System.out.println(bean.toString());}} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
②利用Java反射创建对象的方法
// 根据bean对象中的信息反射创建对象public static Object createObj(String clazz) {Object obj = null;try {Class cla = Class.forName(clazz);obj = cla.newInstance();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}return obj;}
③根据Bean对象中的信息,创建出对象,保存进Map集合,为根据id得到对象准备数据
// 创建beans中所有类的对象,保存进Map集合public void createAllObj() {map = new HashMap<String, Object>();for (Bean bean : list) {String id = bean.getId();Object obj = createObj(bean.getClazz());map.put(id, obj);}}④提供getBean方法
public Object getBean(String id) {Object obj = map.get(id);return obj;}
实现单例效果(在核心工具类创建对象时,调用方法,准备出数据)
public BeanUtils(String path) {this.path = path;file = new File(path);// 解析xml,获取bean信息getBeans();// 根据bean创建对象信息createAllObj();}
完整代码下载:
CSDN下载地址:
点击打开链接
阅读全文
1 0
- Java仿Spring框架IOC控制反转利用反射简单实现(源码)
- 利用反射简单模拟Spring的控制反转(Ioc)和依赖注入(DI)
- 理解Spring框架---利用,xml,java反射简单实现Spring
- SSH学习八 Spring框架 -- 控制反转实现Ioc
- spring.net ioc控制反转框架
- Spring框架IOC(控制反转)的核心
- Spring框架(一)--IOC控制反转
- Spring框架中的ioc(控制反转)
- Spring框架之IOC(控制反转)
- spring IOC 控制反转的简单理解
- Spring 用注解实现IOC控制反转
- PHP简单的IoC控制反转实现
- PHP简单的IoC控制反转实现
- Spring IOC 反转控制
- Spring-----> IOC(控制反转)
- Spring - 控制反转IOC
- Spring IoC[控制反转]
- Spring控制反转IOC
- 1. Two Sum
- 监控窗体按键,发送相应的串口信息
- Flink批处理优化器之成本估算
- 生成随机字符串
- eclipse adt 选择ndk目录时 出现“Not a valid NDK directory”
- Java仿Spring框架IOC控制反转利用反射简单实现(源码)
- pytorch 加正则化的方法
- AES 加密与解密
- Oracle RMAN-增量备份
- JS移动客户端--触屏滑动事件
- WordPress 设置浏览器端缓存,加快访问速度
- Cuda束表决函数(warp vote)
- Windows和Linux容器异同大起底
- RabbitMQ的架构、交换机机制和ACK机制