輕量級java開源blog程序:npress
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作為實現類。