spring-junit-ioc---2013-07-30



 通过实例模拟了spring读取配置文件的基本原理
读取xml文件 得到bean 通过java反射机制 返还相应类的实例
面向接口编程 new的是一个接口 不关心具体实现(在xml中决定具体实现类)

IOC DI

学会使用Junit进行单元测试

未完成 对于property属性set配置 模拟
       对IOC更深入的了解
spring-junit-ioc---2013-07-30

各文件代码

bean.xml

<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>

 

User.java

package com.bjsxt.model;

public class User {
	private String name;
	private String psd;
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setPsd(String psd) {
		this.psd = psd;
	}
	public String getPsd() {
		return psd;
	}
}

 

UserDao.java

package com.bjsxt.dao;

import com.bjsxt.model.User;

public interface UserDao {
	public void save(User u);
}

 

UserDaoImpl.java

package com.bjsxt.dao.impl;

import com.bjsxt.dao.UserDao;
import com.bjsxt.model.User;

public class UserDaoImpl implements UserDao {

	public void save(User u) {
		System.out.println("add u");
		
	}
	
}

 

UserService.java

package com.bjsxt.service;

import com.bjsxt.dao.UserDao;
import com.bjsxt.model.User;

public class UserService {
	private UserDao userDao;

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	public UserDao getUserDao() {
		return userDao;
	}
	public void add(User u){
		this.userDao.save(u);
	}
}

 

BeanFactpry.java

package com.bjsxt.spring;

public interface BeanFactory {
	public Object getBean(String name);
}

 

ClassPathXmlApplication.java

package com.bjsxt.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 ClassPathXmlApplication implements BeanFactory{

	private Map<String,Object> beans = new HashMap<String,Object>();
	
	public ClassPathXmlApplication() throws Exception{
		SAXBuilder sb = new SAXBuilder();
		System.out.println(this.getClass().getClassLoader().toString());
		
		Document doc = sb.build(this.getClass().getClassLoader().getResourceAsStream("bean.xml"));
		Element root = doc.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 o = Class.forName(clazz).newInstance();
			beans.put(id, o);	
		}
	}

	public Object getBean(String name) {
		if(beans.get(name)!=null){
			return beans.get(name); 
		}
		return null;
		
	}
	
}

 

 

你可能感兴趣的:(spring)