<?xml version="1.0" encoding="UTF-8"?> <HD> <disk name="C"> <capacity>8G</capacity> <directories>200</directories> <files>1580</files> </disk> <disk name="D"> <capacity>10G</capacity> <directories>500</directories> <files>3000</files> </disk> </HD>
package cn.edu.hpu.jdom; import java.util.*; import org.jdom.*; import org.jdom.input.SAXBuilder; public class Sample { public static void main(String[] args) throws Exception{ SAXBuilder sb=new SAXBuilder(); Document doc=sb.build(Sample.class.getClassLoader().getResourceAsStream("text.xml"));//构建文档对象 Element root=doc.getRootElement();//获取根元素 List list=root.getChildren("disk");//获取名字为disk的所有元素 for(int i=0;i<list.size();i++) { Element element=(Element)list.get(i); String name=element.getAttributeValue("name"); String capacity=element.getChildText("capacity");//取disk子元素capacity的内容 String directories=element.getChildText("directories"); String files=element.getChildText("files"); System.out.println("磁盘信息:"); System.out.println("分区盘符:"+name); System.out.println("分区容量:"+capacity); System.out.println("目录数:"+directories); System.out.println("文件数:"+files); System.out.println("-----------------------------------"); } } }
package cn.edu.hpu.model; 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; } }
package cn.edu.hpu.dao; import cn.edu.hpu.model.User; public interface UserDao { public void save(User u); } UserDaoImpl.java: package cn.edu.hpu.dao.Impl; import cn.edu.hpu.model.User; public class UserDaoImpl implements UserDao{ public void save(User u) { System.out.println("add success!!"); } }
package cn.edu.hpu.service; import cn.edu.hpu.dao.UserDao; import cn.edu.hpu.dao.Impl.UserDaoImpl; import cn.edu.hpu.model.User; public class UserService { private UserDao userDao= new UserDaoImpl(); public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void add(User u){ this.userDao.save(u); } }
<beans> <bean id="u" class="cn.edu.hpu.dao.Impl.UserDaoImpl" /> <!-- <bean id="userService" class="cn.edu.hpu.service.UserService" > <property name="userDao" bean="u"/> </bean> --> </beans>先写一个模拟spring加载配置文件返回对应实体类的类:
package cn.edu.hpu.spring; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; public class ClassPathXmlApplicationContext implements BeanFactory{ //启动程序的时候先把配置文件的数据读取到容器里 //需要使用的时候再取出来 private Map<String,Object> beans=new HashMap<String,Object>(); public ClassPathXmlApplicationContext() throws Exception{ SAXBuilder sb=new SAXBuilder(); Document doc=sb.build(this.getClass().getClassLoader().getResourceAsStream("beans.xml")); Element root=doc.getRootElement();//获取根元素 List list=root.getChildren("bean");//取名字为bean的所有元素 for(int i=0;i<list.size();i++){ Element element=(Element)list.get(i); String id=element.getAttributeValue("id"); String clazz=element.getAttributeValue("class"); System.out.println(id+":"+clazz); Object o =Class.forName(clazz).newInstance();//newInstance默认调用无参构造器 beans.put(id,o); } } public Object getBean(String id) { return beans.get(id); } }
package cn.edu.hpu.spring; public interface BeanFactory { public Object getBean(String name); }
package cn.edu.hpu.service; import org.junit.Test; import cn.edu.hpu.dao.UserDao; import cn.edu.hpu.model.User; import cn.edu.hpu.spring.BeanFactory; import cn.edu.hpu.spring.ClassPathXmlApplicationContext; public class UserServiceTest { @Test public void testAdd() throws Exception{ /* //这里是传统方式获取UserService UserService service=new UserService(); User u=new User(); service.add(u);*/ BeanFactory factory=new ClassPathXmlApplicationContext(); UserService userService=new UserService(); UserDao userDao=(UserDao)factory.getBean("u"); userService.setUserDao(userDao); User u=new User(); userService.add(u); } }
add success!!
模拟了一个Spring框架的过程,让大家更加理解Spring框架的运行机制
转载请注明出处:http://blog.csdn.net/acmman