Nutz:Ioc

Nutz:Ioc
 
Nutz是一个国产开源项目,Nutz的显著特点是实用小巧,将方便留给开发人员。它的功能是替代SSH/SSI,让开发变得更好更快。
 
Nutz与大牌的SSH比,它仅仅依赖一个字节码包。而全然是实现了SSH的功能,并有不少的创新之处。由于Nutz还很年轻,很多地方有待改进,如果你做个小项目,不妨一用。
 
Nutz做为开源的项目,如果能得到商业的支持,未来前景会很好!
 
主页: http://code.google.com/p/nutz/
 
下面是Nutz的官方介绍,实际上还没有自己的官方站点,代码在Google code上。下面是Nutz对外宣传词:

同传统的 SSH 相比,它具备如下特点:

  • -- 当前最新版,整个 jar 文件共 568k
  • -- 针对 JDBC 的薄封装,无缓存
  • -- 提供了 Dao (ORM, SQL 管理), Ioc, Mvc, Json解析 等必要功能
  • -- 各个部分可以独立使用,比如在 Spring 里采用 Nutz.Dao ,又比如在 Nutz.Ioc 里使用 Hibernate
  • -- 除了 AOP 部分依赖了 javassist ,其它所有部分均不依赖第三方 jar 文件。
这就意味着:如果一个 Web 应用,你在 WEB-INF/lib 下只 需要放置一个 nutz.jar 以及一个 javassist.jar 就够了
当然你要使用其它的连接池,数据库驱动,打印PDF支持等功能,还需要自行添置 jar 包。

Nutz 为谁而设计?

  • 如果你觉得 Hibernate 控制比较繁琐,iBatis 编写SQL又比较麻烦,Nutz.Dao 专为你设计。
  • 如果你觉得在多个服务器部署或者修改 Spring 配置文件很麻烦,Nutz.Ioc 专为你设计
  • 如果你觉得直接写 XML 配置文件很麻烦,可视化编辑器又没控制感,Nutz.Mvc 专为你设计
  • 如果你觉得 JSON 转换很麻烦(要写超过一行以上的代码),Nutz.Json 专为你设计
  • 如果你觉得 Java 语法不如 Ruby 便捷, Nutz.Castor 以及 Nutz.Lang 专为你设计
  • 如果你以前根本没接触过 SSH ,只使用 JDBC 编程, 整个 Nutz 专门为你设计
  • 你只要在你的 classpath 下部署这个 500多K 的小 jar 包,你会得到上述所有好处

Nutz的Ioc与SpringIoc相比,有很大的不同,它的配置文件时json格式的,注入的方式也花样繁多。下面是个例子:
 
import java.util.Calendar;

public class Pet {
         private int fetchCount;

         private String name;

         private Calendar birthday;

         private Pet friend;

         public Pet() {
        }

         public void onFetch() {
                 this.fetchCount++;
        }


         public Pet(String name) {
                 this.name = name;
        }

         public String getName() {
                 return name;
        }

         public void setName(String name) {
                 this.name = name;
        }

         public Calendar getBirthday() {
                 return birthday;
        }

         public void setBirthday(Calendar birthday) {
                 this.birthday = birthday;
        }

         public Pet getFriend() {
                 return friend;
        }

         public void setFriend(Pet friend) {
                 this.friend = friend;
        }

         public int getFetchCount() {
                 return fetchCount;
        }

         public void setFetchCount( int fetchCount) {
                 this.fetchCount = fetchCount;
        }
}
 
var ioc = {
        xb : {
                events : {
                        fetch : 'mypack.OnFetchPet'
                },
                fields : {
                        name : 'XiaoBai'
                }
        },
        xh : {
                events : {
                        fetch : 'onFetch'
                },
                fields : {
                        name : 'XiaoHei'
                }
        }

}
 

import org.nutz.ioc.Ioc;
import org.nutz.ioc.impl.NutIoc;
import org.nutz.ioc.loader.json.JsonLoader;

public class HelloPet {
         public static void main(String[] args) {
//                Ioc ioc = new NutIoc(new JsonLoader("mypack/pets.js"));
//                Pet pet = ioc.get(Pet.class, "xiaobai");
//                System.out.printf("%s - [%s]\n", pet.getName(), pet.getBirthday().getTimeZone().getID());
//                Pet xh = ioc.get(null, "xiaohei");
//                System.out.printf("%s's friend is %s\n", xh.getName(), xh.getFriend().getName());
//

//                Ioc ioc = new NutIoc(new JsonLoader("mypack/inner.js"));
//                Pet pet = ioc.get(Pet.class, "xb");
//                System.out.println(pet.getFriend().getName());

                Ioc ioc = new NutIoc( new JsonLoader( "mypack/events.js"));
                Pet pet = ioc.get(Pet. class, "xb");
                ioc.get(Pet. class, "xb");
                ioc.get(Pet. class, "xb");
//                System.out.printf("%s be fetch %d times", pet.getName(), pet.getFetchCount());

                Pet xh = ioc.get(Pet. class, "xh");
                ioc.get(Pet. class, "xh");
                System.out.printf( "%s be fetch %d times\n", xh.getName(), xh.getFetchCount());
        }
}
 
XiaoHei be fetch 2 times

Process finished with exit code 0

你可能感兴趣的:(职场,IOC,nutz,休闲)