간단 한 SpringIOC 시 뮬 레이 션

4010 단어 spring ioc
IOC (Inersion of Control) 는 Spring 프레임 워 크 의 기반 이 고 BeanFatory 는 IoC 용기 의 핵심 핑계 로 응용 프로그램의 대상 을 예화, 포 지 셔 닝, 설정 하고 이 대상 들 간 의 의존 도 를 구축 하 는 것 이 직책 이다.
      응용 프로그램 Context 인 터 페 이 스 는 BeanFactory 에서 파생 되 어 BeanFactory 의 기능 을 강화 하고 실제 응용 을 위 한 더 많은 방법 을 제공한다.대부분의 경우 애플 리 케 이 션 컨 텍스트 를 Spring 용기 로 사용한다.다음 시 뮬 레이 션 SpringIOC:
       이것 은 POJO 류, Boy. 자바 입 니 다.
 
package POJO;
public class Boy {
private Integer id;
private String name;
private Integer age;
public Boy(){}
//....  getter setter
}

      
         다음은 xml 파일 을 쓰 겠 습 니 다. spring. xml:
 
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id ="boy" class="POJO.Boy">
<property name="id" value="1"/>
<property name="name" value="   "/>
<property name="age" value="11"/>
</bean>
</beans>

 
       핵심 클래스: SpringIOC
public class SpringIOC {
	private String XMLPath;

	/**
	 * @param XMLPath
	 *                   
	 */
	public SpringIOC(String XMLPath) {
		this.XMLPath = XMLPath;
	}

	public Object getBean(String beanId) throws Throwable {
		// 1.      
		Document doc = this.loadXML();
		// 2.  beanId   <bean>  
		Element beanElement = this.getBeanElement(doc, beanId);
		// 3.  beanElement class    
		String classPath = this.getClassPath(beanElement);
		// 4.  class           bean  
		Object obj = this.createObject(classPath);
		// 5.  beanUtils     
		obj = this.setObeject(beanElement, obj);

		return obj;
	}

	/**
	 *   xml    
	 * 
	 * @return
	 * @throws Throwable
	 */
	private Document loadXML() throws Throwable {
		return new SAXReader().read(new File(XMLPath));
	}

	/**
	 *   beanId      bean  
	 * 
	 * @param doc
	 * @param beanId
	 * @return Element
	 */
	private Element getBeanElement(Document doc, String beanId) {
		return (Element) doc.selectSingleNode("//bean[@id='" + beanId + "']");
	}

	/**
	 *   beanElement class   
	 * 
	 * @param beanElement
	 * @return
	 */
	private String getClassPath(Element beanElement) {
		return beanElement.attributeValue("class");
	}

	/**
	 *   class           bean  
	 * 
	 * @param classPath
	 * @return
	 */
	private Object createObject(String classPath) throws Throwable {
		return Class.forName(classPath).newInstance();
	}

	/**
	 *      beanUtils     
	 * 
	 * @param obj
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private Object setObeject(Element beanElement, Object obj) throws Throwable {
		List<Element> list = beanElement.elements();
		for (Element element : list) {
			String name = element.attributeValue("name");
			String value = element.attributeValue("value");
			BeanUtils.setProperty(obj, name, value);
		}
		return obj;
	}
}

 메모: dom4j 로 xml 를 분석 하고 BeanUtils 를 사용 하여 대상 에 게 속성 을 설정 합 니 다. 해당 jar 패 키 지 를 가 져 와 야 합 니 다.
 
        테스트 클래스 TestSpringIOC. java
public class TestSpringIOC {
	
	public static void main(String[] args) throws Throwable {
		

	SpringIOC ioc = new SpringIOC("src/spring.xml");
	
	Boy boy = (Boy) ioc.getBean("boy");
	
	System.out.println(boy);
	
	}
}

     출력: Boy [id = 1, name = 꼬마, age = 11], 간단 한 아 날로 그 SpringIOC 는 여기 서 끝 났 습 니 다.

좋은 웹페이지 즐겨찾기