代码参考自
黄亿华大神的<<1000行代码读懂Spring(一)- 实现一个基本的IoC容器>>
原网页如下
http://my.oschina.net/flashsword/blog/192551
package com.myspring;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class XmlReader {
public static void main(String[] args) {
new XmlReader();
}
public XmlReader(){
DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder domBuilder = domfac.newDocumentBuilder();
//默认是工程目录
InputStream is =new FileInputStream("bin/resources/tinyioc.xml");
Document doc = domBuilder.parse(is);
Element root = doc.getDocumentElement();
NodeList beans = root.getChildNodes();
if(beans!=null)
for (int i = 0; i < beans.getLength(); i++) {
Node bean = beans.item(i);
if (bean.getNodeName().equals("bean")) {
Element el=(Element) bean;
System.out.println( el.getAttribute("id") +" "+el.getAttribute("class") );
NodeList propertyNode = el.getElementsByTagName("property");
for (int j = 0; j < propertyNode.getLength(); j++)
if(propertyNode.item(j) instanceof Element){
Element e=(Element) propertyNode.item(j);
String name=e.getAttribute("name");
String value=e.getAttribute("value").equals("")?e.getAttribute("ref"):e.getAttribute("value");
System.out.println(" "+name+" "+value );
}
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
xml如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<bean id="helloWorldService" class="com.myspring.HelloWorldServiceImpl">
<property name="text" value="Hello World!"></property>
<property name="out" ref="outputService"></property>
</bean>
<bean id="outputService" class="com.myspring.OutputService">
</bean>
<bean id="autoProxyCreator" class="us.codecraft.tinyioc.aop.AspectJAwareAdvisorAutoProxyCreator"></bean>
<bean id="timeInterceptor" class="us.codecraft.tinyioc.aop.TimerInterceptor"></bean>
<bean id="aspectjAspect" class="us.codecraft.tinyioc.aop.AspectJExpressionPointcutAdvisor">
<property name="advice" ref="timeInterceptor"></property>
<property name="expression" value="execution(* us.codecraft.tinyioc.*.*(..))"></property>
</bean>
</beans>
运行结果如下
helloWorldService com.myspring.HelloWorldServiceImpl
text Hello World!
out outputService
outputService com.myspring.OutputService
autoProxyCreator us.codecraft.tinyioc.aop.AspectJAwareAdvisorAutoProxyCreator
timeInterceptor us.codecraft.tinyioc.aop.TimerInterceptor
aspectjAspect us.codecraft.tinyioc.aop.AspectJExpressionPointcutAdvisor
advice timeInterceptor
expression execution(* us.codecraft.tinyioc.*.*(..))