結(jié)合反射說(shuō)明SpringIOC的實(shí)現(xiàn)原理是怎樣的

本篇文章給大家分享的是有關(guān)結(jié)合反射說(shuō)明SpringIOC的實(shí)現(xiàn)原理是怎樣的,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、大埔ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的大埔網(wǎng)站制作公司

前面已經(jīng)對(duì)IOC進(jìn)行了說(shuō)明,也知道了IOC的原理是反射機(jī)制。那么接下來(lái)看看如何通過(guò)反射機(jī)制說(shuō)明IOC

看下代碼:

packagecom.sinoair.gtms.controller.web.IOC;

importjavax.annotation.Resource;
importjavax.xml.ws.Service;
importjava.lang.reflect.Field;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;

public classMyIOC {
    /**
     *
模擬Spring掃描的注解包
     */
   
private final staticString packageName = "com.albert.AnnotationTest";

    /**
     *
存放注解的bean對(duì)象
     */
   
private staticMap<String,Object> beanMap =newHashMap<String, Object>();
    static{
        try{
            packageToScan();
        } catch(InstantiationExceptione) {
            e.printStackTrace();
        } catch(IllegalAccessExceptione) {
            e.printStackTrace();
        }
    }

    /**
     *
根據(jù)beanName從容器獲取bean對(duì)象
     * @param
beanName
    
* @return
    
*/
   
public staticObject getBean(String beanName){
        Object obj = null;
        obj = beanMap.get(beanName);
        returnobj;
    }

    /**
     *
遍歷包中的注解類
     * @throwsIllegalAccessException
     * @throwsInstantiationException
     */
   
private static voidpackageToScan() throwsInstantiationException,IllegalAccessException{
        List<Class> clsList =ClassByPackage.getClasssFromPackage(packageName);
        //先加載dao
       
for(Class cls : clsList){
            //判斷類是不是有@Respository注解
           
if(cls.isAnnotationPresent(Respository.class)){
                String clsName =AlbertUtil.getBeanName(cls.getName());
                //bean對(duì)象存入map
                
beanMap.put(clsName,cls.newInstance());
            }
        }
        //加載service,同時(shí)對(duì)其中@Resource注解的屬性進(jìn)行賦值
       
for(Class cls : clsList){
            if(cls.isAnnotationPresent(Service.class)){
                String clsName =cls.getName();
                clsName =clsName.substring(clsName.lastIndexOf(".")+1, clsName.length());
                beanMap.put(AlbertUtil.toLowerCaseFirstOne(clsName),cls.newInstance());

                //掃描注解@Resource的屬性并賦值
               
Field[] field = cls.getDeclaredFields();
                for(Field f : field){
                    //判斷屬性是不是有@Resource注解
                   
if(f.isAnnotationPresent(Resource.class)){
                        f.setAccessible(true);
                        f.set(beanMap.get(AlbertUtil.getBeanName(cls.getName())), beanMap.get(f.getName()));
                    }
                }
            }
        }
    }

}

以上就是結(jié)合反射說(shuō)明SpringIOC的實(shí)現(xiàn)原理是怎樣的,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站名稱:結(jié)合反射說(shuō)明SpringIOC的實(shí)現(xiàn)原理是怎樣的
URL網(wǎng)址:http://bm7419.com/article18/igdhdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、App設(shè)計(jì)做網(wǎng)站、微信公眾號(hào)、網(wǎng)站建設(shè)、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)