最近学习了下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就是这打出来的。
这个应该是历史遗留问题,作者也不推荐使用了,所以还是按标准的来。不过也相当简单,就那几个字段,照着配好就行。
分享到:
相关推荐
Nutz支持JSON格式的配置文件,用于声明Bean之间的关系和特殊配置。 ```json { "myService": {"type": "com.example.MyService", "args": [{"ref": "myRepository"}]} } ``` ### 6. 初始化与销毁方法 在Nutz中,...
同时,Nutz.mvc的配置也是通过Nutz.Ioc进行管理的,意味着控制器、视图和服务等组件都支持依赖注入,并且可以将它们的状态存储在数据库或JSON文件中。此外,Nutz.mvc还提供了权限检查、文件上传和下载等Web应用常用...
Ioc -- JSON 风格的配置文件,声明时切片支持 Mvc -- 注解风格的配置,内置多文件上传功能 Json -- 解析和渲染 Castors -- Java 对象类型转换 Lang -- 更简洁的 Java 函数以及更丰富的反射支持 Aop -- 轻便快速的切...
接着,我们需要配置 `nutz-plugin-multiupload` 插件,这可能涉及到在 `conf/nutz.conf` 文件中添加相应的配置项,例如设置临时文件路径、最大文件大小等参数。 在代码实现上,Nutz 提供了 `org.nutz....
Nutz.Ioc支持JSON风格的配置文件和声明式的切片支持,它使得依赖注入变得更加简单。Nutz.Mvc则采用了注解风格的配置和内置的多文件上传功能,大大简化了控制器层面的代码编写。Nutz.Json则提供了JSON的解析和渲染...
Nutz是一个轻量级、高性能的Java开发框架,它提供了丰富的功能,包括MVC、ORM、DAO、AOP、IOC等,使得Java开发者能够快速地构建应用系统。本篇文章将详细探讨Nutz框架中所需的jar包以及它们在项目中的作用。 首先,...
对于数据库连接,Nutz提供了Ioc(Inversion of Control)容器来管理数据库连接池,这样开发者可以方便地在应用中配置和使用数据库。描述中提到“mysql/jdk1.6”,这表明该项目使用的是MySQL数据库,并且兼容JDK 1.6...
- **灵活性**:Nutz支持多种配置方式,如JSON风格的配置文件、注解等,便于不同开发者根据自身需求选择合适的配置方式。 #### 三、Nutz框架各模块详解 1. **Dao模块**:针对JDBC进行了轻量级封装,提供了简单的...
Ioc模块采用JSON风格的配置文件,支持声明式切片,使得依赖注入更为简洁。Mvc模块则采用注解风格的配置,内置了多文件上传功能,使Web层的开发更加直观。Json模块为JSON数据的解析和渲染提供了解决方案。Castors模块...
- Ioc:具备JSON风格的配置文件,支持声明式切片。 - Mvc:采用注解风格配置,支持内置多文件上传功能。 - Json:具备JSON解析和渲染能力。 - Castors:提供Java对象类型转换。 - Lang:通过更简洁的Java函数和...
Nutz.Ioc(Inversion of Control)基于JSON配置文件,提供依赖注入功能,允许声明时切片支持,使得对象间的依赖关系管理更加灵活。开发者可以声明并管理各种服务和对象实例。 **Mvc手册**: Nutz.Mvc提供注解风格的...
- **希望简化Spring配置的开发者**:Nutz的IoC容器使用简单的JSON配置文件,减少了配置的复杂性。 - **寻找更便捷MVC框架的开发者**:Nutz的MVC框架采用了注解驱动的方式,使得视图和控制器的编写更加直观。 - **...
开发者无需编写大量的XML配置文件,而是通过注解或者Java代码进行配置,这大大减少了开发时间并降低了出错概率。同时,Nutz还提供了丰富的API和工具,如数据库操作、JSON处理、文件操作等,这些都使得开发过程更为...
4. **依赖注入(IoC)**:Nutz也实现了依赖注入的概念,允许开发者通过配置或注解来管理对象的生命周期和依赖关系,降低了代码的耦合度,提高了可测试性和可维护性。 5. **AOP(面向切面编程)**:Nutz支持AOP,...
通过配置文件或注解,开发者可以定义对象的创建和装配规则,使代码更加松耦合,便于测试和扩展。 3. **AOP(Aspect-Oriented Programming)**: AOP是一种编程范式,允许在不修改原有代码的情况下插入额外的功能,...
3. **Ioc(Inversion of Control,控制反转)与AOP(Aspect-Oriented Programming,面向切面编程)**:Nutz实现了基于注解的依赖注入(DI)和AOP,使得对象之间的依赖关系可以通过配置文件或注解进行管理,同时可以...
2. **Ioc**:使用JSON风格的配置文件进行依赖注入管理,支持声明式的切片定义,使得配置更加直观和易于维护。 3. **Mvc**:基于注解的MVC架构,内置多文件上传功能,大大简化了Web应用的开发流程。 4. **Json**:...
4. **Nutz插件**:Nutz有丰富的插件系统,如WebSocket支持、RESTful API生成、JSON序列化等,这些可能会在资料中有所涉及。 5. **实战案例**:通过实际项目案例,展示如何使用Nutz进行Web应用开发,包括项目的搭建、...