NutzCN Logo
问答 nutz 自己实例的ioc会过段时间自动销毁吗?
发布于 3080天前 作者 lancedou 2399 次浏览 复制 上一个帖子 下一个帖子
标签: ioc

Ioc ioc = new NutIoc(new JsonLoader("conf/application.js"));
项目里自己实例的ioc可以正常使用,后来程序io有阻塞时间太长时候,日志里面发现
INFO org.nutz.ioc.impl.NutIoc[293]:Ioc depose tigger by finalize(), not a good idea!

现在想了解下,nutz 自己实例的ioc会过段时间自动销毁吗?

6 回复

99.9999999999%的场景下自行new NutIoc都是错误的

应该使用注入, 如果不能直接注入,那么获取nutz.mvc的Ioc容器

在NutFilter作用域内:

Ioc ioc = Mvcs.getIoc()

其他任意地方

Ioc ioc = Mvcs.ctx().getDefaultIoc();

@wendal 我的项目不是单纯的web项目,现在用的功能是单独的java程序,这样使用nutz的dao不需要new NutIoc来操作吗。
Ioc ioc = new NutIoc(new ComboIocLoader("*org.nutz.ioc.loader.json.JsonLoader", "conf/application.js", "*org.nutz.ioc.loader.annotation.AnnotationIocLoader", "com.server.behavior", "com.action", "com.web"), new ScopeContext("app"), "app");
没有Loader不行吧。

  1. NutDao 不需要Ioc
  2. 如果需要走ioc, 那边Ioc容器本身,必须放到一个静态变量, 或一个长期持有的对象里面, 以确保Ioc容器不会被GC掉

@wendal 要是不用ioc去操作数据库的话,还有什么更好的方式呀,方便给个例子吗。链接也可以。

用的是1.b.53不? 如果是的话, 里面有DaoUp这个类, 你看看吧

你现在这个, 最直接的解决方法就是把Ioc放到一个静态变量完事.

@wendal 现在用的nutz-1.b.52.r3,先改下静态试试,谢谢了

添加回复
请先登陆
回到顶部