java bean工厂_从零构建轻量级Java Web框架
Bean工廠
回顧下前面的知識(shí),通過(guò)加載配置文件獲取應(yīng)用基礎(chǔ)包名,加載基礎(chǔ)包名下所有的類,獲取Controller,Service類。到目前為止,我們只是加載了類,但是無(wú)法通過(guò)獲取的類來(lái)實(shí)例化對(duì)象。因此需要一個(gè)反射工具,來(lái)實(shí)例化類。
創(chuàng)建一個(gè)Bena工廠,來(lái)生產(chǎn)(實(shí)例化Bean類對(duì)象)Bean。newInstance()方法,實(shí)例化目標(biāo)類;invokeMethod()通過(guò)反射機(jī)制來(lái)調(diào)用類中的方法;setField()通過(guò)反射機(jī)制為類成員遍歷賦值。
//Bean工廠
public class BeanFactory {
/**
* 創(chuàng)建實(shí)例
*
* @param clazz
* @return
*/
public static Object newInstance(Class> clazz) {
Object instance;
try {
instance = clazz.newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
return instance;
}
/**
* 方法調(diào)用
*
* @param obj
* @param method
* @param args
* @return
*/
public static Object invokeMethod(Object obj, Method method, Object... args) {
Object result;
try {
method.setAccessible(true);
result = method.invoke(obj, args);
} catch (Exception e) {
throw new RuntimeException(e);
}
return result;
}
/**
* 設(shè)置成員變量值
*
* @param obj
* @param field
* @param value
*/
public static void setField(Object obj, Field field, Object value) {
try {
field.setAccessible(true);
field.set(obj, value);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
總結(jié)
以上是生活随笔為你收集整理的java bean工厂_从零构建轻量级Java Web框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 个性化推荐系统原理介绍(基于内容推荐/协
- 下一篇: 天猫盒子android tv,天猫魔盒刷