codecamp

同 Ioc 容器一起工作

内置的 Ioc 容器

一个 Mvc 框架可以通过 Ioc 接口同一个 Ioc 容器挂接,挂接的方法很简单: 在主模块上声明 @IocBy

@IocBy(type=ComboIocProvider.class, args={"*js", "ioc/",
                                       "*anno", "net.wendal.nutzbook",
                                       "*async",
                                       "*tx"
                                       })
public class MainModule {
    ...

推荐使用ComboIocProvider,组合使用各种IocLoader. 详细用法请参考Ioc复合加载器

IocBy的默认type就是ComboIocProvider,可以不写.

由 Ioc 容器管理子模块

如果声明了@IocBean,那么 @InjectName是不需要的,且无效的!!

通过 @IocBy 为整个应用声明了 Ioc 容器,那么如何使用呢。 实际上,你的每一个模块都可以来自容器,只要 你在模块上声明 @InjectName。 当然,在主模块声明这个注解是没有意义的。

@InjectName("petM")
public class PetModule {
   ...
  • 如果你声明了这个注解, Nutz.Mvc 构造你的这个模块的时候,会通过 Ioc 容器获取,而不直接调用默认构造函数了。
  • 如果你的 '@InjectName' 并没有值,那么默认会将你的模块类名首字母小写作为模块的注入名
    • 比如上例,你直接声明 '@InjectName' 同 '@InjectName("petModule")' 是等效的

在容器对象里获得 ServletContext

别注入了,直接拿

Mvcs.getServletContext();

自定 Ioc 容器

你很喜欢 Spring,或者你很喜欢 Guice。不管怎么说,你不想用 Nutz.Ioc,那么没关系,你可以自己实现一个 IocProvider。 并用 @IocBy 声明到整个应用中即可。通过 Spring 或者 Guice 实现 Ioc 接口想必不是什么难事。

视图
本地化字符串
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

表达式引擎

maplist结构

图像处理小军刀

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }