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

 ,其它所有部分均不依赖第三方 jar 文件。
这就意味着:如果一个 Web 应用,你在 WEB-INF/lib 下只 需要放置一个 nutz.jar 以及一个 javassist.jar 就够了
当然你要使用其它的连接池,数据库驱动,打印PDF支持等功能,还需要自行添置 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