⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beanconfigreader.java

📁 一个简单的java邮件系统源码
💻 JAVA
字号:
package com.easyjf.web.config;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Element;

import com.easyjf.beans.MutablePropertyValues;

import com.easyjf.container.impl.BeanDefinitionImpl;
import com.easyjf.util.ClassUtils;
import com.easyjf.web.Module;
/**
 * 读取配置文件中的Bean信息
 * @company EasyJF开源
 * @author 大峡
 *
 */
public class BeanConfigReader {
	private static final Logger logger = Logger
	.getLogger(BeanConfigReader.class);
	public static List parseBeansFromDocument(Document doc) {
		List list = doc.selectNodes("/easyjf-web/beans/bean");
		try {
			if (list != null) {
				for (int i = 0; i < list.size(); i++) {
					Element e = (Element) list.get(i);
					BeanDefinitionImpl definition = new BeanDefinitionImpl();
					// 处理基本属性
					definition.setBeanName(e.attributeValue("name"));
					definition.setBeanClass(ClassUtils.forName(e
							.attributeValue("class")));
					if (e.attributeValue("scope") != null)
						definition.setScope(e.attributeValue("scope"));
					if(e.attributeValue("factory-method")!=null)
						definition.setFactoryMethod(e.attributeValue("factory-method"));
					// 解析处理设值方法配置
					List ps = e.selectNodes("property");
					MutablePropertyValues mpv = parsePropertyValues(ps);
					definition.setPropertyValues(mpv);
					// 解析处理构造子方法配置

					list.set(i, definition);
				}
			}
		} catch (Exception e) {
			logger.error("加载Bean配置信息错误!" + e);
			throw new com.easyjf.web.exception.FrameworkException(
					"加载Bean配置信息错误!", e);
		}
		return list;
	}

	public static MutablePropertyValues parsePropertyValues(List ps) {
		MutablePropertyValues mpv = new MutablePropertyValues();
		for (int j = 0; j < ps.size(); j++) {
			Element pe = (Element) ps.get(j);
			mpv.addPropertyValue(pe.attributeValue("name"),
					parsePropertyValue(pe));
		}
		return mpv;
	}

	public static List parseBeansFromModules(Map modules) {
		List list = new ArrayList();
		Iterator it = modules.values().iterator();
		while (it.hasNext()) {
			try {
				Module m = (Module) it.next();
				BeanDefinitionImpl definition = new BeanDefinitionImpl(m
						.getPath(), ClassUtils.forName(m.getAction()), m
						.getScope());
				definition.setPropertyValues(m.getPropertyValues());
				list.add(definition);
			} catch (Exception e) {
				logger.error("把Module信息转换成Bean出现错误!" + e);
			}
		}
		return list;
	}

	public static Object parsePropertyValue(Element e) {
		// 首先判断value属性
		Object value = e.attributeValue("value");
		if (value == null && e.element("value") != null)
			value = e.element("value").getText();

		// 使用ref属性
		if (value == null) {
			String ref = e.attributeValue("ref");
			if (ref == null && e.element("ref") != null) {
				ref = e.element("ref").attributeValue("value") != null ? e
						.element("ref").attributeValue("value") : e.element(
						"ref").getText();
			}
			if (ref != null) {
				BeanDefinitionImpl innerBean = new BeanDefinitionImpl();
				innerBean.setBeanName(ref);
				value = innerBean;
			}
		}
		// 判断集合

		// 解析内部Bean
		return value;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -