1. 创建自己的bean文件:beans.xml
<?xml version="1.0" encoding="UTF-8"?><busi-beans><beans><bean id="SysHelloImpl" type="com.cxm.test.SysHello"><desc>test</desc><impl-class>com.cxm.test.SysHelloImpl</impl-class></bean></beans></busi-beans>
2. 提供解析xml类:XmlUtils
/** * */package com.cxm.xmlutil;import java.io.InputStream;import java.util.Iterator;import java.util.Map;import org.jdom.Attribute;import org.jdom.Document;import org.jdom.Element;import org.jdom.input.SAXBuilder;import org.jdom.xpath.XPath;import com.cxm.beaninfo.BeanInfo;/** * @author admin * */public class XmlUtils{public static void parseXmlDef(InputStream in, Map<String,BeanInfo> beanDefMap,StringBuffer sb) throws Exception{SAXBuilder reader = new SAXBuilder(false);Document doc = null;try{doc = reader.build(in);Iterator beanIt = XPath.selectNodes(doc, "/busi-beans/beans/bean").iterator();Element e;BeanInfo beanDef;while (beanIt.hasNext()){beanDef = new BeanInfo();e = (Element) beanIt.next();Attribute attrId = e.getAttribute("id");Attribute attrType = e.getAttribute("type");Attribute singleType = e.getAttribute("single");boolean isSingle = true;if(null != singleType&&"1".equals(singleType.getValue())){isSingle= false;}beanDef.setSingle(isSingle);beanDef.setBeanId(attrId.getValue());beanDef.setType(attrType.getValue());beanDef.setBeanDesc(getText(e, "desc"));beanDef.setImplClassName(getText(e, "impl-class"));//处理初始化参数beanDefMap.put(attrId.getValue(), beanDef);}}catch (Exception e){e.printStackTrace();}}/** * 根据指定的element, xPath获取XML文档内容 * * @param p_element * @param p_xPath * @return * @throws Exception */public static String getText(Element p_element, String p_xPath)throws Exception {String text = null;Element e=(Element)XPath.selectSingleNode(p_element,p_xPath);if (e != null) {text = e.getText();} else {}return text;}}3.定义bean IO
/** * */package com.cxm.beaninfo;/** * @author admin * */public class BeanInfo{private String beanId;private String type;private String beanDesc;public String getBeanDesc(){return beanDesc;}public void setBeanDesc(String beanDesc){this.beanDesc = beanDesc;}public String getType(){return type;}public void setType(String type){this.type = type;}private String implClassName;public String getBeanId(){return beanId;}public void setBeanId(String beanId){this.beanId = beanId;}public String getImplClassName(){return implClassName;}public void setImplClassName(String implClassName){this.implClassName = implClassName;}public boolean isSingle(){return isSingle;}public void setSingle(boolean isSingle){this.isSingle = isSingle;}private boolean isSingle = true;}4.bean的创建类:BeanUtil
/** * */package com.cxm.bean;/** * @author admin * */public class BeanUtil{private static XmlBeanFactory factory = new XmlBeanFactory();/** * 获取定义好的Bean对象 * @param p_beanId * @return * @throws Exception */public static Object createBean(String p_beanId)throws Exception {return factory.createBean(p_beanId);}} /** * */package com.cxm.bean;import java.io.FileNotFoundException;import java.io.InputStream;import java.lang.reflect.Constructor;import java.util.HashMap;import java.util.Map;import com.cxm.beaninfo.BeanInfo;import com.cxm.exception.NoSuchBeanDefinitionException;import com.cxm.xmlutil.XmlUtils;/** * @author admin * */public class XmlBeanFactory{private static String BEAN_XML = "/beans.xml";private static Map<String,BeanInfo> beanDefMap = new HashMap<String,BeanInfo>();private static Map<String,Object> instanceMap = new HashMap<String,Object>();static {InputStream in = XmlBeanFactory.class.getResourceAsStream(BEAN_XML);if(in ==null){try{throw new FileNotFoundException();}catch (FileNotFoundException e){e.printStackTrace();}}StringBuffer sb = new StringBuffer();try{XmlUtils.parseXmlDef(in, beanDefMap, sb);}catch (Exception e){throw new RuntimeException();}}public Object createBean(String beanId) throws Exception{if(beanId==null || beanId.trim()==""){throw new Exception("BeanId can not NULL or '' ");}BeanInfo beanInfo = beanDefMap.get(beanId);if(null ==beanInfo ){throw new NoSuchBeanDefinitionException(" beanid is not define in xml");}Object instance;if(beanInfo.isSingle()){instance =instanceMap.get(beanId);if(null != instance){return instance;}}String implClass = beanInfo.getImplClassName();Constructor<?> constructor = Class.forName(implClass.trim()).getConstructor();instance = constructor.newInstance();if(beanInfo.isSingle()){instanceMap.put(beanId, instance);}return instance;}}5. 测试:
/** * */package com.cxm.test;/** * @author admin * */public interface SysHello{void sysHello();} /** * */package com.cxm.test;/** * @author admin * */public class SysHelloImpl implements SysHello{@Overridepublic void sysHello(){System.out.println("hello world!");}} /** * */package com.cxm.test;import com.cxm.bean.BeanUtil;/** * @author admin * */public class Test{/** * @param args * @throws Exception */public static void main(String[] args) throws Exception{SysHello s = (SysHello)BeanUtil.createBean("SysHelloImpl");s.sysHello();}}以上这篇java实现Spring在XML配置java类的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。