Spring 의 beanFacotry 시 뮬 레이 션

Spring 에는 두 가지 중요 한 개념 중 하나 가 있다. IOC (inversion of control) 반전 을 제어 하 는 것 은 대상 이 beanfactory 에서 대상 을 만 드 는 것 입 니 다. beanfactory 안에 용기 가 있 습 니 다. 그 는 클래스 대상 을 불 러 오고 용 기 는 map 입 니 다.
간단 한 시 뮬 레이 션 beanfactory 구현:
/ / 호출 프로그램
public class Test {
public static void main(String[] args) throws Exception{
BeanFactory f = new ClassPathXmlApplicationContext("com/d12321/applicationContext.xml");
Object o = f.getBean("v");
}
}

/ / beanfactory 인터페이스
public interface BeanFactory {
Object getBean(String id) throws Exception;
}

/ / 인 터 페 이 스 를 실현 하 는 ClassPathXmlApplication Context 대상
public class ClassPathXmlApplicationContext implements BeanFactory {
private Map<String,Object>  container = new HashMap<String, Object>(); //  spring   
public ClassPathXmlApplicationContext(String filename)  throws Exception {
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(Test.class.getClassLoader().getResourceAsStream(filename));
Element root = doc.getRootElement();
List list = XPath.selectNodes(root, "/beans/bean");
for(int i = 0; i < list.size(); i++) {
Element elem = (Element) list.get(i);
String it = elem.getAttributeValue("id");
String value = elem.getAttributeValue("value");
Object o = Class.forName(value).newInstance();
container.put(it, o);
}
}
@Override
public Object getBean(String id) {
return container.get(id);
}
}

/ / 클래스 대상
public class Car {
Car() {
System.out.println("car ....");
}
}

//applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="v" value="com.d12321.Car">
</bean>>
</beans

요약:
     1. 시 뮬 레이 션 에 사용 되 는 중요 한 기술, jdom xml 파일 분석
     2. Class. forname (클래스 이름). newInstance ();클래스 개체 생 성
     3. (클래스 이름). getClass (). getClassLoader (). getResourceAsStream ("xx / xx / xx. xml"); exp: Document doc = sb.build(Test.class.getClassLoader().getResourceAsStream(filename));

좋은 웹페이지 즐겨찾기