轻量级java开源blog程序:npress

jopen 10年前

npress 是六特尔原创的java开源blog程序,基于六特尔原创开源的NLF框架构建。

npress 可直接部署运行,使用NLF框架自带的csv数据库,程序启动会自动创建数据库至D:\\db\\npress目录下(可在 nc.liat6.npress.DbSettingManagerNPress中修改),数据库表文件为普通的csv文件格式,可使用文本编辑工具或 excel查看或直接修改。

本程序默认开启html缓存模式,访问过的页面,会自动在classes\\cache\\文件夹下建立html缓存页面,下次请求,自动返回html,减轻压力,加快速度。

默认管理员账号密码为admin,可进入后台修改。

NLF框架自动寻找接口的实现类:

我将用一个很简单的例子来说明NLF框架的自动寻找接口实现这一特性。

我们定义一个接口,IWalk,有一个walk方法。

public interface IWalk{

public void walk();

}

然后,我们写一个类来实现这个接口。

public class WalkImplV1 implements IWalk{

@Override

public void walk(){

System.out.println("走得很慢");

}

如果我是一个小白,我会这样去调用它。

IWalk m = new WalkImplV1();

m.walk();

如果我是一个大白,我会用spring,和一大堆jar,和一大堆xml。

如果我是NLF框架的使用者,我会这样做。

IWalk m = Factory.getCaller().newInstance(IWalk.class);

m.walk();

上面那一行代码,即使用了NLF框架的一个特性,自动寻找IWalk接口的实现,它会在nlf.jar和您的应用代码中(不会从外部引入的其他jar中寻找)找到WalkImplV1,最后输出:走得很慢。

这时,你会有一个疑问,如果有多个IWalk的实现,NLF框架会找哪个呢?

NLF框架寻找实现类有个优先级,即用户代码优先级高,nlf.jar中代码优先级低。如果用户代码中有实现类,则放弃从nlf.jar中寻找,你可以理解为nlf.jar是备胎。

NLF框架会把找到的多个实现类按短类名(排除包名)进行降序排列,取最前面的那个类作为实现类。如果我们增加一个名为WalkImplV2的实现类,则NLF框架会把WalkImplV2作为实现类。

项目主页:http://www.open-open.com/lib/view/home/1402817636325