01spring spring的简单模拟
来源:互联网 发布:linux source 编辑:程序博客网 时间:2024/05/20 06:27
spring的设计是面向接口(抽象)的好处:灵活,可以更换不同的实现模拟spring读取xml配置文件beans.xml//可以看成是一个大的容器<beans><bean id="u" class="com.dao.impl.UserDAOImpl"/><bean id="userService" class="com.service.UserService"><property name="userDAO" bean="u"/>//把userDAO装配(注入)到userService中</bean></beans>public interface BeanFactory{public Object getBean(String name);}public class ClassPathXmlApplicationContext implements BeanFactory{private Map<String,Object> beans = new HashMap<String,Object>();public ClassPathXmlApplicationContext() throws Exception{SAXBuilder builder = new SAXBuilder();Document doc = builder.build(Sample.class.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.getChildText("class");System.out.println(id+":"+clazz);Object o = Class.forName(clazz).newInstance();beans.put(id,o);for(Element propertyElement:(List<Element>)element.getChild("property")){String name = propertyElement.getAttributeValue("name");//userDAOString bean = propertyElement.getAttributeValue("bean");//uObject beanObject = beans.get(bean);//UserDAOImpl instanceString methodName = "set"+name.substring(0,1).toUpperCase()+name.substring(1);System.out.println("method name = "+methodName);Method m = o.getClass().getMethod(methodName,beanObject.getClass().getInterfaces()[0]);//根据方法名和参数获取方法(因为可能存在重载)//参数是userDAOImpl实现的接口中的一个m.invoke(o,beanObject);//调用o对象的m方法,传入参数beanObject}}}public Object getBean(String name){return beans.get(name);}}public class UserServiceTest{@Testpublic void testAdd() throws Exception{BeanFactory factory = new ClassPathXmlApplicationContext();UserService service = new UserService();//UserDAO userDAO = (UserDAO)factory.getBean("u");//service.setUserDAO(userDAO);User u = new User();service.add(u);}}
0 0
- 01spring spring的简单模拟
- 简单模拟 Spring 的 ioc
- Spring 简单模拟
- spring 注入简单模拟
- spring 简单模拟 ioc
- Spring 架构的简单模拟实现
- java简单模拟Spring的依赖注入
- 简单代码 模拟 spring的IOC机制
- spring依赖注入原理的简单模拟
- 最简单的模拟spring容器例子
- 模拟spring - 简单实现spring IOC
- 简单模拟Spring IOC功能
- Java简单模拟实现Spring
- 模拟Spring的实现
- 模拟spring的IOC
- 注解的spring模拟
- 模拟spring的注入
- 模拟Spring的Ioc
- velocity基本语法
- fiddler工具教程
- 解决XP下使用雅黑字体韩文无法显示的问题
- wp7 XAP部署工具
- 阿里资深系统架构师九峰谈云计算
- 01spring spring的简单模拟
- Java compiler level does not match the version of the installed Java project facet.
- ubuntu下安装ssh 实现远程登录工具secureCRTl连接
- Python 正则表达式验证传统日期
- Android 激活Deviceadmin,并进行锁屏和恢复出厂设置
- Crack Sublime Text 3 | Ubuntu
- 联想A800新蜂ROM V1.1 基于官方4.0.4精简省电稳定
- Uva 10369 Arctic Network 最小生成树
- 大数据架构师基础:hadoop家族,Cloudera产品系列等各种技术