通過在類上標註@registration 註冊進容器,@injection從容器注入物件
容器類:
public class springcontainer else
bean.setbeanclass(c);
mappropsmap = new hashmap();
//處理注入屬性
field props = c.getdeclaredfields();
for(field p : props)
bean.setproperties(propsmap);
beanmap.put(bean.getid(), bean);}}
private static mapbeanmap = new hashmap();
public static object getbean(string beanname) throws classnotfoundexception,
instantiationexception, illegalacces***ception, illegalargumentexception, invocationtargetexception
object o = bean.getbeanclass().newinstance();
iterator> iter = bean.getproperties().entryset().iterator();
while (iter.hasnext())
return o;
}private static void setproperty(object obj, string propname, class propclass) throws illegalargumentexception, illegalacces***ception, invocationtargetexception, classnotfoundexception, instantiationexception }}
}}public static string returnsetmthodname(string fieldname)
/**
* 從包package中獲取所有的class
* * @param pack
* @return
*/
public static set> getclasses(string pack) else if ("jar".equals(protocol))
// 如果前半部分和定義的包名相同
if (name.startswith(packagedirname))
// 如果可以迭代下去 並且是乙個包
if ((idx != -1) || recursive) catch (classnotfoundexception e)
} }
} }
} catch (ioexception e)
} }
} catch (ioexception e)
return classes;
} /**
* 以檔案的形式來獲取包下的所有class
* * @param packagename
* @param packagepath
* @param recursive
* @param classes
*/
public static void findandaddclassesinpackagebyfile(string packagename,
string packagepath, final boolean recursive, set> classes)
// 如果存在 就獲取包下的所有檔案 包括目錄
file dirfiles = dir.listfiles(new filefilter()
});
// 迴圈所有檔案
for (file file : dirfiles) else catch (classnotfoundexception e)
} }
} }
bean描述類
public class bean
public string getid()
public mapgetproperties()
public void setbeanclass(class beanclass)
public void setid(string id)
public void setproperties(mapproperties)
}annotation類兩個
@retention(retentionpolicy.runtime)
public @inte***ce injection
@retention(retentionpolicy.runtime)
public @inte***ce registration
模擬實現strcmp
函式簡介 原型 int strcmp const char s1,const char s2 所在標頭檔案 string.h 功能 比較字串s1和s2。一般形式 strcmp 字串1,字串2 說明 當s1注意不是 1 當s1 s2時,返回值 0 當s1 s2時,返回正數 注意不是1 如下 int m...
模擬實現strncat
模擬實現strncat 在系統庫函式中,存在strncat這個函式,它用於字串的追加,就是在乙個字串後面再追加乙個字串,它的函式原型為 char strncat char strdest,const char strsource,size t count 在其中,strdest為目標字串,strso...
模擬實現printf
模擬實現printf。例如實現 print d tcc s n 3,w e welcome to you 使用可變引數應該有以下步驟 1 首先在函式裡定義乙個va list型的變數,這裡是arg ptr,這個變數是指向引數的指標.2 然後用va start巨集初始化變數arg ptr,這個巨集的第二...