一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - java實現Spring在XML配置java類的方法

java實現Spring在XML配置java類的方法

2020-07-08 13:56java教程網 JAVA教程

下面小編就為大家帶來一篇java實現Spring在XML配置java類的方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1. 創建自己的bean文件:beans.xml

java" id="highlighter_168366">
?
1
2
3
4
5
6
7
8
9
<?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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/**
 *
 */
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/**
 *
 */
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/**
 *
 */
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. 測試:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/**
 *
 */
package com.cxm.test;
 
/**
 * @author admin
 *
 */
public interface SysHello
{
    void sysHello();
}
 
 
 
/**
 *
 */
package com.cxm.test;
 
/**
 * @author admin
 *
 */
public class SysHelloImpl implements SysHello
{
 
    @Override
    public 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類的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品久久久成人 | 欧美影院一区二区三区 | 亚洲国产成人99精品激情在线 | 2020年国产精品午夜福利在线观看 | 美味情缘韩国在线观看视频 | 亚洲色图第四色 | 亚洲国产一区二区三区a毛片 | 手机看片一区二区 | 好大好猛好爽好深视频免费 | 五月色综合婷婷综合俺来也 | www久久com| 欧美亚洲另类在线观看 | 欧美同志video 在线观看 | 亚洲精品在线播放 | 免费一级国产大片 | 国产最强大片免费视频 | 青青青久在线视频免费观看 | 97热久久免费频精品99国产成人 | 日韩欧美在线一区二区三区 | 亚洲国产欧美在线成人aaaa | 亚洲区精品 | 色悠久久久久综合网小说 | 亚洲入口 | 二次元美女脱裤子让男人桶爽 | 小小水蜜桃视频高清在线播放 | 国产在线观看人成激情视频 | 欧美日韩第二页 | 午夜亚洲WWW湿好爽 午夜想想爱午夜剧场 | 3d美女触手怪爆羞羞漫画 | 亚洲国产精品综合欧美 | 性色AV一区二区三区V视界影院 | tube69中国露脸| 欧美日韩国产在线一区 | 91精品国产高清久久久久久 | 久久久久激情免费观看 | 久久精品国产欧美日韩99热 | 国产三级精品播放 | 99re这里只有精品视频在线观看 | 亚洲国产精品自在现线让你爽 | 成3d漫二区三区四区 | 丝瓜黄瓜茄子西红柿秋葵榴莲 |