📄 beanconfigreader.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 + -