Spring_使用XML配置文件创建对象

来源:互联网 发布:js中slice的用法 编辑:程序博客网 时间:2024/05/16 07:36
<beans><bean id="u" class="com.bjsxt.dao.impl.UserDaoImpl" /><!--<bean id="userService" class="com.bjsxt.service.UserService"><property name="userDao" bean="u" /></bean>--></beans>


package com.bjsxt.spring;public interface BeanFactory {public Object getBean(String name);}

package com.bjsxt.spring;import java.util.HashMap;import java.util.List;import java.util.Map;import org.jdom2.Document;import org.jdom2.Element;import org.jdom2.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 document = sb.build(ClassPathXmlApplicationContext.class.getClassLoader().getResource("beans.xml"));// 获取文件Element root = document.getRootElement();// 获取根元素List list = root.getChildren();// 获取名字为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 obj = Class.forName(clazz).newInstance();beans.put(id, obj);}}@Overridepublic Object getBean(String name) {return beans.get(name);}}

package com.bjsxt.service;import org.junit.Test;import com.bjsxt.dao.UserDao;import com.bjsxt.model.User;import com.bjsxt.spring.BeanFactory;import com.bjsxt.spring.ClassPathXmlApplicationContext;public class UserServiceTest {@Testpublic void testAdd() throws Exception {BeanFactory factory = new ClassPathXmlApplicationContext();UserService service = new UserService();UserDao ud = (UserDao) factory.getBean("u");service.setUd(ud);User user = new User();service.add(user);}}


原创粉丝点击