`
wolf_awp
  • 浏览: 54978 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

nutz中ioc的Json配置文件格式

    博客分类:
  • nutz
阅读更多

最近学习了下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就是这打出来的。

 

这个应该是历史遗留问题,作者也不推荐使用了,所以还是按标准的来。不过也相当简单,就那几个字段,照着配好就行。

1
1
分享到:
评论

相关推荐

    在Nutz中使用Ioc-Annotation的入门教程

    Nutz支持JSON格式的配置文件,用于声明Bean之间的关系和特殊配置。 ```json { "myService": {"type": "com.example.MyService", "args": [{"ref": "myRepository"}]} } ``` ### 6. 初始化与销毁方法 在Nutz中,...

    新框架Nutz

    同时,Nutz.mvc的配置也是通过Nutz.Ioc进行管理的,意味着控制器、视图和服务等组件都支持依赖注入,并且可以将它们的状态存储在数据库或JSON文件中。此外,Nutz.mvc还提供了权限检查、文件上传和下载等Web应用常用...

    nutz-1.b.52.zip

    Ioc -- JSON 风格的配置文件,声明时切片支持 Mvc -- 注解风格的配置,内置多文件上传功能 Json -- 解析和渲染 Castors -- Java 对象类型转换 Lang -- 更简洁的 Java 函数以及更丰富的反射支持 Aop -- 轻便快速的切...

    nutz 文件上传例子

    接着,我们需要配置 `nutz-plugin-multiupload` 插件,这可能涉及到在 `conf/nutz.conf` 文件中添加相应的配置项,例如设置临时文件路径、最大文件大小等参数。 在代码实现上,Nutz 提供了 `org.nutz....

    nutz pdf学习文档

    Nutz.Ioc支持JSON风格的配置文件和声明式的切片支持,它使得依赖注入变得更加简单。Nutz.Mvc则采用了注解风格的配置和内置的多文件上传功能,大大简化了控制器层面的代码编写。Nutz.Json则提供了JSON的解析和渲染...

    nutz需要的jar包

    Nutz是一个轻量级、高性能的Java开发框架,它提供了丰富的功能,包括MVC、ORM、DAO、AOP、IOC等,使得Java开发者能够快速地构建应用系统。本篇文章将详细探讨Nutz框架中所需的jar包以及它们在项目中的作用。 首先,...

    nutz应用示例

    对于数据库连接,Nutz提供了Ioc(Inversion of Control)容器来管理数据库连接池,这样开发者可以方便地在应用中配置和使用数据库。描述中提到“mysql/jdk1.6”,这表明该项目使用的是MySQL数据库,并且兼容JDK 1.6...

    nutz框架开发手册

    - **灵活性**:Nutz支持多种配置方式,如JSON风格的配置文件、注解等,便于不同开发者根据自身需求选择合适的配置方式。 #### 三、Nutz框架各模块详解 1. **Dao模块**:针对JDBC进行了轻量级封装,提供了简单的...

    nutz-1.b.48-manual.pdf 文档

    Ioc模块采用JSON风格的配置文件,支持声明式切片,使得依赖注入更为简洁。Mvc模块则采用注解风格的配置,内置了多文件上传功能,使Web层的开发更加直观。Json模块为JSON数据的解析和渲染提供了解决方案。Castors模块...

    nutz-1.b.49-manual.pdf

    - Ioc:具备JSON风格的配置文件,支持声明式切片。 - Mvc:采用注解风格配置,支持内置多文件上传功能。 - Json:具备JSON解析和渲染能力。 - Castors:提供Java对象类型转换。 - Lang:通过更简洁的Java函数和...

    nutz使用手册

    Nutz.Ioc(Inversion of Control)基于JSON配置文件,提供依赖注入功能,允许声明时切片支持,使得对象间的依赖关系管理更加灵活。开发者可以声明并管理各种服务和对象实例。 **Mvc手册**: Nutz.Mvc提供注解风格的...

    Nutz官方手册

    - **希望简化Spring配置的开发者**:Nutz的IoC容器使用简单的JSON配置文件,减少了配置的复杂性。 - **寻找更便捷MVC框架的开发者**:Nutz的MVC框架采用了注解驱动的方式,使得视图和控制器的编写更加直观。 - **...

    nutz除了ssh框架比较好的框架

    开发者无需编写大量的XML配置文件,而是通过注解或者Java代码进行配置,这大大减少了开发时间并降低了出错概率。同时,Nutz还提供了丰富的API和工具,如数据库操作、JSON处理、文件操作等,这些都使得开发过程更为...

    Nutz开发用到的jar包

    4. **依赖注入(IoC)**:Nutz也实现了依赖注入的概念,允许开发者通过配置或注解来管理对象的生命周期和依赖关系,降低了代码的耦合度,提高了可测试性和可维护性。 5. **AOP(面向切面编程)**:Nutz支持AOP,...

    nutz-master.zip

    通过配置文件或注解,开发者可以定义对象的创建和装配规则,使代码更加松耦合,便于测试和扩展。 3. **AOP(Aspect-Oriented Programming)**: AOP是一种编程范式,允许在不修改原有代码的情况下插入额外的功能,...

    nutz-master

    3. **Ioc(Inversion of Control,控制反转)与AOP(Aspect-Oriented Programming,面向切面编程)**:Nutz实现了基于注解的依赖注入(DI)和AOP,使得对象之间的依赖关系可以通过配置文件或注解进行管理,同时可以...

    nutz-1.b.40-manual.pdf

    2. **Ioc**:使用JSON风格的配置文件进行依赖注入管理,支持声明式的切片定义,使得配置更加直观和易于维护。 3. **Mvc**:基于注解的MVC架构,内置多文件上传功能,大大简化了Web应用的开发流程。 4. **Json**:...

    nutz学习资料4

    4. **Nutz插件**:Nutz有丰富的插件系统,如WebSocket支持、RESTful API生成、JSON序列化等,这些可能会在资料中有所涉及。 5. **实战案例**:通过实际项目案例,展示如何使用Nutz进行Web应用开发,包括项目的搭建、...

Global site tag (gtag.js) - Google Analytics