双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

spring的ClassPathXmlApplicationContext

a387776286 a387776286 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我想用dom4j模拟一下spring的ioc,可是最后一句总空指针 是怎么回事
public ClassPathXmlApplicationContext() throws Exception {
SAXReader reader = new SAXReader();

// 构造文档对象
Document document = reader.read(new File("src/config/spring/demo0/springMethod/beans.xml"));

Element rootElmt = document.getRootElement();// 获取根元素beans
List<Element> list = rootElmt.elements("bean");// 取名字为bean的所有元素
for (int i = 0; i < list.size(); i++) {
Element element = (Element) list.get(i);
Attribute attr = element.attribute("id");// 通过id找到这个属性
// System.out.println(attr.getName() + "=" + attr.getValue());//通过找到的属性的getName()和getValue()找到属性和值
String clazz = element.attributeValue("class");//通过class找到属性值
Object o = Class.forName(clazz).newInstance();
System.out.println(clazz);
beans.put(attr.getName(), o);

for (Element propertyElement : (List<Element>) element.elements("property")) {
String name = propertyElement.attributeValue("name"); // userDAO
String bean = propertyElement.attributeValue("bean"); // u
Object beanObject = beans.get(bean);// UserDAOImpl instance

String methodName = "set" + name.substring(0, 1).toUpperCase()
+ name.substring(1);
System.out.println("method name = " + methodName);

System.out.println(bean);

Method m = o.getClass().getMethod(methodName,beanObject.getClass().getInterfaces()[0]);
m.invoke(o, beanObject);
}

}

}

xml文件:
<beans>
<bean id="userDAO"
class="com.frank.demo0.springMethod.dao.impl.UserDAOImpl" />
<bean id="userService"
class="com.frank.demo0.springMethod.Service.impl.UserServiceImpl">
<property name="userDAO" bean="userDAO" />
</bean>
</beans>
...全文
评论
收藏 已收藏
分享
返回顶部
a387776286
Java 51,407 成员 86,136 内容