package net.spring.test;
import java.lang.reflect.Method;
import net.spring.util.LogInitiate;
import net.spring.util.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/**
* @author chengli 無(wú)侵入式的可擴(kuò)展框架:無(wú)需代碼中涉及Spring類,即可納入Spring容器進(jìn)行管理
* 核心類BeanFactory作為依賴注入機(jī)制的實(shí)現(xiàn)基礎(chǔ)
*/
public class QuickStart {
public static void main(String[] args) {
// BasicConfigurator.configure();
LogInitiate.initialize();
Logger logger = new Logger(QuickStart.class);
try {
ApplicationContext ctx = new FileSystemXmlApplicationContext(
"bean.xml");
// 從ctx中讀取的配置信息區(qū)分大小寫(xiě)
// Spring通過(guò)依賴注入機(jī)制,將依賴關(guān)系從編碼中脫離,從而大大降低組件之間的耦合
// 通過(guò)接口來(lái)將調(diào)用者和實(shí)現(xiàn)者分離
Action action = (Action) ctx.getBean("UpperAction");
logger.info(action.execute(" Mis JohSon"));
action = (Action) ctx.getBean("LowerAction");
logger.info(action.execute(" Mis JohSon"));
} catch (Exception e) {
// e.printStackTrace();
logger.error(e.getMessage());
}
}
public Object reflection(String className,String methodName ,String nameValue) {
Class cls;
Object obj = null;
try {
cls = Class.forName(className);
Method mtd = cls.getMethod(methodName, new Class[] { String.class });
obj = (Object) cls.newInstance();
mtd.invoke(obj, new Object[] { nameValue });
return obj;
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
}