最近学习了下nutz
,感觉很不错,入门第一步肯定是Hello world。我在学ioc的Hello world
的时报了个警告:
log4j: 2012-02-27 23:19:38,366 [main] WARN org.nutz.ioc.IocLoading - Using *Declared* ioc-define (without type or events)!!! Pls use Standard Ioc-Define!! Bean will define as:
{
"singleton" :true,
"args" :[],
"fields" :[{
"name" :"name",
"value" :{
"type" :"normal",
"value" :"XiaoBai"
}
}, {
"name" :"birthday",
"value" :{
"type" :"normal",
"value" :"2009-10-25 15:23:40"
}
}]
}
警告的意思是“使用了声明式的ioc定义,请使用标准的ioc定义”,那么什么是标准的ioc定义呢,Hello world
的下一节匿名对象
就说了:如果配置文件解析成map后的键值仅包含“type、scope、singleton、fields、args、events”中的一个或几个字段,就是个标准的ioc定义。
报之上的警告是因为在ioc的配置文件中,使用了:
xiaobai : {
name : 'XiaoBai',
birthday : '2009-10-25 15:23:40'
}
这样,name和birthday就会被当作map的键值,它们不包含在“type、scope、singleton、fields、args、events”之内。
可以修改为:
xiaobai : {
fields : {
name : 'XiaoBai',
birthday : '2009-10-25 15:23:40'
}
}
这样的话,fields就是会成为解析后map的键值,就不会报开始的那个警告。
我跟了下代码,在nutz-1.b.42.jar(我使用的是这个版本)org.nutz.ioc包里面的Iocs虚拟类中(应该作为工具类,防止实例化才定义为虚拟类的,不过这种可以直接把其默认构造器私有化来实现,不用搞个虚拟类)有个方法就是用来检测是否为标准的ioc定义。
/**
* @author zozoh(zozohtnt@gmail.com)
* @author wendal(wendal1985@gmail.com)
*
*/
public abstract class Iocs {
private static final String OBJFIELDS = "^(type|scope|singleton|fields|args|events)$";
public static boolean isIocObject(Map<String, ?> map) {
for (Entry<String, ?> en : map.entrySet())
if (!en.getKey().matches(OBJFIELDS))
return false;
return true;
}
// 此处省略其他方法
}
意思很明白,和以上所说的一样,如果map的key不包含在"type|scope|singleton|fields|args|events"中就返回false。在同一个包下的IocLoading类的map2iobj方法有如下判断:
@SuppressWarnings("unchecked")
public IocObject map2iobj(Map<String, Object> map) throws ObjectLoadException {
final IocObject iobj = new IocObject();
if (!isIocObject(map)) {
for (Entry<String, Object> en : map.entrySet()) {
IocField ifld = new IocField();
ifld.setName(en.getKey());
ifld.setValue(object2value(en.getValue()));
iobj.addField(ifld);
}
if(log.isWarnEnabled()) //TODO 移除这种兼容性
log.warn("Using *Declared* ioc-define (without type or events)!!! Pls use Standard Ioc-Define!!" +
" Bean will define as:\n"+Json.toJson(iobj));
}// 此处省略其他代码
}
开始的WARN就是这打出来的。
这个应该是历史遗留问题,作者也不推荐使用了,所以还是按标准的来。不过也相当简单,就那几个字段,照着配好就行。
分享到:
相关推荐
Json 解析器 -- Nutz.Json 更多的简化Java语法的函数和类 -- Nutz.Lang 以及 Nutz.Castors 不依赖任何第三方 Jar 包,从而便于程序员建立开发环境,部署,甚至重新编译 Nutz 的源代码。 不幸的是在第一版,我还是...
Ioc -- JSON 风格的配置文件,声明时切片支持 Mvc -- 注解风格的配置,内置多文件上传功能 Json -- 解析和渲染 Castors -- Java 对象类型转换 Lang -- 更简洁的 Java 函数以及更丰富的反射支持 Aop -- 轻便快速的切...
NULL 博文链接:https://gevin.iteye.com/blog/1131500
全 -- 提供了 Dao (ORM, SQL 管理), Ioc, Aop, Mvc, Json解析 等必要功能 活 -- 各个部分可以独立使用,比如在 Spring 里采用 Nutz.Dao ,又比如在 Nutz.Ioc 里使用 Hibernate 等 整 -- 它所有功能均不依赖第三方 ...
同传统的 SSH 相比,它具备如下特点:轻 -- 当前最新版,整个 jar 文件共 910kB -- 针对 JDBC 的薄封装,无缓存全 -- 提供了 Dao (ORM, SQL 管理), Ioc, Aop, Mvc, Json解析 等必要功能活 -- 各个部分可以独立使用,...
全 -- 提供了 Dao (ORM, SQL 管理), Ioc, Aop, Mvc, Json解析 等必要功能 活 -- 各个部分可以独立使用,比如在 Spring 里采用 Nutz.Dao ,又比如在 Nutz.Ioc 里使用 Hibernate 等 整 -- 它所有功能均不依赖第三方 ...
• 通过简单的toJson 和fromJson能完成绝大部分的互转工作, 不再需要额外的配置. • 能够提供模板, 容易的更改Json的展现, 和反向的Java Object生成 • 适用于任何的Java对象, 包括基本类型 • 支持JDK1.5+
NULL 博文链接:https://yunhaifeiwu.iteye.com/blog/760352
•全 -- 提供了 Dao (ORM, SQL 管理), Ioc, Aop, Mvc, Json解析 等必要功能 •活 -- 各个部分可以独立使用,比如在 Spring 里采用 Nutz.Dao ,又比如在 Nutz.Ioc 里使用 Hibernate 等 •整 -- 它所有功能均不依赖...
* Ioc -- JSON 风格的配置文件,声明时切片支持 * Mvc -- 注解风格的配置,内置多文件上传功能 * Json -- 解析和渲染 * Castors -- Java 对象类型转换 * Lang -- 更简洁的 Java 函数以及更丰富的反射支持 * Aop -- ...
Nutz高效开发框架是国内比较独立强大的技术团队开发的轻量级的框架快捷实用工具,由于可以方便地在各种数据库中调用存储数据,所以可以称之为...Nutz是一组轻便小型的框架的集合,可以做MVC、数据库访问、JSON转换、IoC
使用nutz, 直接写sql查询 select 中包含 order by 查询出错的问题修正
nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册
NULL 博文链接:https://yunhaifeiwu.iteye.com/blog/763832
用于nutz邮箱验证jar包
nutz生成javabean工具.zip
可连接多种数据库根据表直接生成nutz所需的bean
让nutz支持freemarker。 具体使用和在struts2中使用是一样的
nutz框架使用手册,从零到有深入学习nutz平台开发