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;
}
}
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'
}
}
}
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
Process finished with exit code 0