use of org.nutz.ioc.Ioc in project nutz by nutzam.
the class PlugsTest method test_get_plugin_from_ioc.
@Test
public void test_get_plugin_from_ioc() {
Ioc ioc = new NutIoc(new JsonLoader("org/nutz/plugin/plugin.js"));
PluginManager<Log> manager = new IocPluginManager<Log>(ioc, "pluB", "pluA", "pluC");
assertNotNull(manager.get());
assertTrue(manager.get() instanceof SystemLogAdapter);
ioc.depose();
}
use of org.nutz.ioc.Ioc in project nutz by nutzam.
the class ModuleProcessor method process.
public void process(ActionContext ac) throws Throwable {
RequestIocContext reqContext = null;
try {
if (null != moduleObj) {
ac.setModule(moduleObj);
} else {
Ioc ioc = ac.getIoc();
Object obj;
/*
* 如果 Ioc 容器实现了高级接口,那么会为当前请求设置上下文对象
*/
if (NutSessionListener.isSessionScopeEnable && ioc instanceof Ioc2) {
reqContext = new RequestIocContext(ac.getRequest());
HttpSession sess = Mvcs.getHttpSession(false);
IocContext myContext = null;
// 如果容器可以创建 Session ...
if (null != sess) {
SessionIocContext sessionContext = new SessionIocContext(sess);
myContext = new ComboContext(reqContext, sessionContext);
} else // 如果容器禁止了 Session ...
{
myContext = reqContext;
}
Mvcs.setIocContext(myContext);
obj = ((Ioc2) ioc).get(moduleType, injectName, myContext);
} else
/*
* 否则,则仅仅简单的从容器获取
*/
obj = ioc.get(moduleType, injectName);
ac.setModule(obj);
}
ac.setMethod(method);
// if (log.isDebugEnabled()) //打印实际执行的Method信息
// log.debugf("Handle URL[%s] by Method[%s]",ac.getPath(),method);
doNext(ac);
} finally {
if (reqContext != null)
try {
reqContext.depose();
} catch (Throwable e) {
if (log.isDebugEnabled())
log.debug("ReqContext depose fail?!", e);
}
}
}
use of org.nutz.ioc.Ioc in project nutz by nutzam.
the class Nutzs method getIoc.
public static Ioc getIoc(String key) {
Ioc nut = nuts.get(key);
if (null == nut) {
synchronized (Nutzs.class) {
nut = nuts.get(key);
try {
if (null == nut) {
nut = new NutIoc(new JsonLoader(key));
nuts.put(key, nut);
}
} catch (Exception e) {
throw Lang.wrapThrow(e);
}
}
}
return nut;
}
use of org.nutz.ioc.Ioc in project nutz by nutzam.
the class Nutzs method depose.
public static void depose() {
for (Ioc ioc : nuts.values()) ioc.depose();
nuts.clear();
nuts = null;
}
use of org.nutz.ioc.Ioc in project nutz by nutzam.
the class NutLoading method depose.
public void depose(NutConfig config) {
if (log.isInfoEnabled())
log.infof("Nutz.Mvc[%s] is deposing ...", config.getAppName());
Stopwatch sw = Stopwatch.begin();
// Firstly, upload the user customized desctroy
try {
Setup setup = config.getAttributeAs(Setup.class, Setup.class.getName());
if (null != setup)
setup.destroy(config);
} catch (Exception e) {
throw new LoadingException(e);
} finally {
SessionProvider sp = config.getSessionProvider();
if (sp != null)
sp.notifyStop();
// If the application has Ioc, depose it
Ioc ioc = config.getIoc();
if (null != ioc)
ioc.depose();
}
// Done, print info
sw.stop();
if (log.isInfoEnabled())
log.infof("Nutz.Mvc[%s] is down in %sms", config.getAppName(), sw.getDuration());
}
Aggregations