java plug机制_插件机制 - OpooPress - 基于 Java 的静态博客生成器
插件機(jī)制
通過(guò)插件機(jī)制可以很容易的擴(kuò)展 OpooPress 博客系統(tǒng)的功能。 Plugin 定義如下
public interface Plugin{
/**
*
* @param registry
*/
void initialize(Registry registry);
}
Registry 接口定義如下:
public interface Registry {
Site getSite();
void registerConverter(Converter c);
void registerGenerator(Generator g);
void registerSiteFilter(SiteFilter filter);
void registerTemplateModel(String name, TemplateModel model);
void registerTemplateLoader(TemplateLoader loader);
}
可見,要自定義插件,主要就是實(shí)現(xiàn) Plugin 接口 的 initialize() 方法。在該方法中,開發(fā)者可以調(diào)用 Registry 對(duì)象注冊(cè)自定義的組件。這些自定義的組件包括:Converter、Generator、SiteFilter、TemplateModel、TemplateLoader 等。
Converter
格式轉(zhuǎn)化器。
主要用來(lái)轉(zhuǎn)化博客或者網(wǎng)站的源文件。OpooPress 默認(rèn)支持 Markdown 和 Textile 格式,分別由 org.opoo.press.converter.TxtmarkMarkdownConverter 和 org.opoo.press.converter.TextilejConverter 進(jìn)行處理。
開發(fā)者可自定義 Converter 來(lái)替換現(xiàn)有的轉(zhuǎn)化器,或者支持新格式。例如可以開發(fā) WikiConverter 用于支持 *.wiki 文件的處理。
Generator
頁(yè)面生成器。
主要用于生成特定的輸出頁(yè)面,如 博客首頁(yè)分頁(yè)頁(yè)面、標(biāo)簽頁(yè)面、分類目錄頁(yè)面等。
開發(fā)者可以自定義 Generator 來(lái)生成所需的頁(yè)面,例如生成站點(diǎn)地圖文件 sitemap.xml 和 sitemaps.html。
SiteFilter
站點(diǎn)過(guò)濾器(處理器)。
用于在站點(diǎn)(site)生成引擎運(yùn)行的各個(gè)階段中插入自己的處理代碼,這些可插入代碼的點(diǎn)為 setup, read, generate, reader, write。
該接口的定義詳見源文件 SiteFilter.java,可查看 SiteImpl 類源文件了解 SiteFilter 是如何以及何時(shí)被調(diào)用的。
TemplateModel
自定 FreeMarker 模板模型。
開發(fā)者可以通過(guò)這個(gè)機(jī)制自定義 FreeMarker 標(biāo)簽并注冊(cè),就可以在文章或者頁(yè)面中調(diào)用這些標(biāo)簽。請(qǐng)閱讀 FreeMarker 文檔了解詳情。
TemplateModel 還可以用來(lái)自定義函數(shù),同樣注冊(cè)后可在頁(yè)面中調(diào)用。例如 TitleCaseModel。
TemplateLoader
FreeMarker TemplateLoader,用于指定注冊(cè)自定義的 FreeMarker 模板加載器。
DefaultPlugin
目前 OpooPress 默認(rèn)的生成引擎也是通過(guò)插件機(jī)制實(shí)現(xiàn)的,默認(rèn)插件為 DefaultPlugin,該插件會(huì)自動(dòng)查找站點(diǎn)配置文件 config.yml 中定義的 Converter、Generator、SiteFilter 類名,實(shí)例化這些類并自動(dòng)注冊(cè)。
config.yml 關(guān)于 DefaultPlugin 的配置如下:
# ------------------------ #
# Default PlugIn Settings #
# ------------------------ #
converters:
- org.opoo.press.converter.TxtmarkMarkdownConverter
- org.opoo.press.converter.TextilejConverter
generators:
- org.opoo.press.generator.PaginationGenerator
- org.opoo.press.generator.CategoryGenerator
- org.opoo.press.generator.TagGenerator
# siteFilters:
# - org.opoo.press.filter.FixUrlSiteFilter
如果開發(fā)者不打算定義一個(gè)完整的 Plugin,僅僅開發(fā) Converter 或者 Generator,可以在這里進(jìn)行配置,而不必配置整個(gè)插件。
總結(jié)
以上是生活随笔為你收集整理的java plug机制_插件机制 - OpooPress - 基于 Java 的静态博客生成器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 有什么做法简单但特别美味的甜品吗?
- 下一篇: java的地位_Java地位无可动摇的1