Grails 1.2参考文档速读(19):插件
生活随笔
收集整理的這篇文章主要介紹了
Grails 1.2参考文档速读(19):插件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Grails是一個插件架構,這一點我們已經在前面體會到了,最典型的就是GORM一節中,我們明明沒有定義crud操作,但在運行時卻可以使用它,造成這一結果的“元兇”就是我們預先安裝的Hibernate插件。在這一節里,我們將對這背后的機制進行一番探究,對插件有一個基本的了解。Plugin是Grails的主要擴展點,其工程跟普通Grails工程并無區別,只是多了一個描述文件。描述文件位于位于工程根目錄,是以GrailsPlugin結尾的Groovy文件。同時,工程中缺省沒有URL Mappings,因此Controller無法馬上工作,如果需要則必須手工添加該文件。插件相關的命令如下:
- grails create-plugin
- grails run-app
- grails package-plugin
- grails install-plugin url(或路徑)
- grails list-plugins:列出插件倉庫中插件
- grails plugin-info 插件名:列出插件信息
- grails release-plugin
- version:版本
- title:短描述
- author:作者
- authorEmail:作者的Email
- description:長描述
- documentation:文檔URL
- grails-app/conf/DataSource.groovy
- grails-app/conf/UrlMappings.groovy
- build.xml
- /web-app/WEB-INF目錄中所有內容
- 插件文件中pluginExcludes定義的內容,如:
def pluginExcludes = ["grails-app/views/error.gsp"]
- 在指定倉庫中查找,grails list-plugins -repository=myRepository
- 在指定倉庫中發布,grails release-plugin -repository=myRepository
- 原Plugin工程的grails-app目錄內容移至plugins/plugin-version/grails-app。
- 原Plugin工程中web-app的靜態內容移至web-app/plugins/plugin-version。
- 原Plugin工程的Java和Groovy內容編譯到web-app/classes
- *Classes,獲得某artefact的所有類:application.controllerClasses
- get*Class,獲得某artefact的指定類:application.getControllerClass("ExampleController")
- is*Class,判斷指定類是否是某artefact:application.isControllerClass(ExampleController.class)
- getPropertyValue
- hasProperty
- newInstance
- getName
- getShortName
- getFullName
- getPropertyName
- getLogicalPropertyName
- getNaturalName
- getPackageName
- scripts/_Install.groovy,plugin被安裝后觸發
- scripts/ _Update.groovy,update命令觸發
- doWithSpring:Spring配置,使用Spring Bean Builder。
- doWithWebDescriptor:web.xml,使用XmlSlurper。
- doWithApplicationContext:ApplicationContext構建之后。
- doWithDynamicMethods:動態增加動態方法
- watchedResources屬性:監測的資源。
- onChange閉包:監視資源發生變化時調用,傳入event對象,它的主要屬性:event.source,事件源,重載的類或Spring資源;event.ctx,Spring的ApplicationContext實例;event.plugin,管理資源的plugin對象(通常是this);event.application,GrailsApplication實例
- influences屬性:定義影響的plugin,在重載時會一并載入。方向:由此及彼。
def influences = ['controllers'] - observe屬性:定義觀察的plugin,當那個插件變化時,獲得變化通知事件。方向:由彼及此。
def observe = ["hibernate"]def observe =["*"]
- 例1: def dependsOn = [dataSource:1.0, core: 1.0]
- 例2: def dependsOn = [foo:"1.0 > 1.1"]。該表達式表示1.0~1.1版,包括1.0和1.1。可以使用*代表任意版本,如[foo:"* > 1.0"]、[foo:"1.0 > *"] 。
轉載于:https://blog.51cto.com/bcptdtptp/306638
總結
以上是生活随笔為你收集整理的Grails 1.2参考文档速读(19):插件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 曲阜师范大学附属中学日照校区(曲阜师范大
- 下一篇: Web 2.0的个性化存储需求