grails学习笔记-5、conf下的配置文件

来源:互联网 发布:c语言判断是否是素数 编辑:程序博客网 时间:2024/05/29 14:16

配置文件结构如下图:

大体说说每个文件的作用:

1、resources.groovy:Spring的bean在这里便配置。

// Place your Spring DSL code hereimport org.springframework.cache.ehcache.EhCacheManagerFactoryBeanimport org.springframework.cache.ehcache.EhCacheFactoryBeanbeans = {//----------------------EhCache配置---------------------------begin//EhCacheManagerFactoryBean创建的cacheManager是单例模式的cacheManager (EhCacheManagerFactoryBean){bean->shared=trueconfigLocation="/WEB-INF/ehcache.xml"}//EhCacheManagerFactoryBean是一个FactoryBean,用来产生CacheManageradvertismentCache(EhCacheFactoryBean){//EhCacheFactoryBean是一个FactoryBean,用来产生CachecacheManager = ref("cacheManager")cacheName = "advertisementCache"}clientVersionCache(EhCacheFactoryBean){//EhCacheFactoryBean是一个FactoryBean,用来产生CachecacheManager = ref("cacheManager")cacheName = "clientVersionCache"}//---------------------EhCache配置---------------------------end}

上边是我一个项目中的。以前要在applicationContext.xml中配置的bean你可以挪到这里来。凡是这里定义的bean,你都可以直接注入到controller和service中使用。

例如这样

class BookController {    def reportCache//在resource文件中有定义

    def getElement(){

        Element element=reportCache.get(xx)

    }

}

service中也是一样。

2、ApplicationResources.groovy:这个在项目中基本没用到。不熟悉。

3、BootStrap.groovy。如果你要在程序启动后/程序结束时自动做一些工作,就在这里。

import com.eternal.photomanage.system.SysRoleimport com.eternal.photomanage.system.SysUserimport com.eternal.photomanage.bussiness.Advertisementimport net.sf.ehcache.Cache;import net.sf.ehcache.Elementimport org.apache.shiro.crypto.hash.Sha256Hashclass BootStrap {def advertisementServicedef clientVersionServiceCache advertismentCache//缓存发布的广告    def init = { servletContext ->//建立超级管理员用户//Create the admin role   def adminRole = SysRole.findByName('ROLE_ADMIN') ?:   new SysRole(name: 'ROLE_ADMIN').save(flush: true, failOnError: true)   // Create an admin SysUser   def adminUser = SysUser.findByUsername('admin') ?:   new SysUser(username: "admin",   passwordHash: new Sha256Hash('password').toHex(),   type:SysUser.SysUserType.SysUser.value)   .save(flush: true, failOnError: true)   // Add roles to the admin SysUser   assert adminUser.addToRoles(adminRole)   .save(flush: true, failOnError: true)   //Add permission to the role ROLE_ADMIN   assert adminRole.addToPermissions("*:*")   .save(flush: true, failOnError: true)   //查询发布的广告,将广告推送到缓存  advertisementService.pushAdvertisments()  // 查询客户端版本信息,将发布的版本信息放到缓存中   clientVersionService.pushNewVersion()    }    def destroy = {    }}
上边是我一个项目中的。我在程序启动后往缓存中推送了数据。注意:advertisementService和clientVersionService,这是我定义的两个service,可以直接注入到BootStrap.groovy中使用。两个服务类分别是AdvertisementService.groovy和ClientVersionService.groovy,注入时只要将类名的第一个字母小写就行了。destory一般不用,因为你只有通过命令(比如tomcat:catalina stop)或者停止服务等正常方式来停止服务器,才能调用destory。我们不能保证destory被调用。
4、BuildConfig.groovy。项目build是用到的信息。

grails.servlet.version = "2.5" // Change depending on target container compliance (2.5 or 3.0)grails.project.class.dir = "target/classes"grails.project.test.class.dir = "target/test-classes"grails.project.test.reports.dir = "target/test-reports"grails.project.target.level = 1.6grails.project.source.level = 1.6//grails.project.war.file = "target/${appName}-${appVersion}.war"grails.project.dependency.resolution = {    // inherit Grails' default dependencies    inherits("global") {        // specify dependency exclusions here; for example, uncomment this to disable ehcache:        // excludes 'ehcache'    }    log "error" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'    checksums true // Whether to verify checksums on resolve    repositories {        inherits true // Whether to inherit repository definitions from plugins        grailsPlugins()        grailsHome()        grailsCentral()        mavenLocal()        mavenCentral()        // uncomment these (or add new ones) to enable remote dependency resolution from public Maven repositories        //mavenRepo "http://snapshots.repository.codehaus.org"        //mavenRepo "http://repository.codehaus.org"        //mavenRepo "http://download.java.net/maven/2/"        //mavenRepo "http://repository.jboss.com/maven2/"    }    dependencies {        // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.        // runtime 'mysql:mysql-connector-java:5.1.20'runtime  'postgresql:postgresql:9.1-902.jdbc4'    }    plugins {        runtime ":hibernate:$grailsVersion"        runtime ":jquery:1.8.0"        runtime ":resources:1.1.6"        // Uncomment these (or add new ones) to enable additional resources capabilities        //runtime ":zipped-resources:1.0"        //runtime ":cached-resources:1.0"        //runtime ":yui-minify-resources:0.1.4"        build ":tomcat:$grailsVersion"        runtime ":database-migration:1.1"        compile ':cache:1.0.0'compile(':shiro:1.1.4'){//加上这句话后,安装插件和打包时也就不再引入shiro1.1.4所依赖的quartz-1.6.2.jarexcludes "quartz"}    }}grails.war.resources = { stagingDir, args ->copy(todir: "${stagingDir}/WEB-INF/classes"){fileset(dir:"grails-app/conf",includes:"log4jConf.groovy")}copy(todir: "${stagingDir}/WEB-INF/classes"){fileset(dir:"grails-app/conf",includes:"QuartzConfig.groovy")}}

上边是我一个项目中的。详细说明看官方文档。我就不说了。我说要我曾遇到的问题。

(1)数据库驱动jar。我在lib中引入jar包,add to build path,refresh dependencies。开发中没遇到问题,编译也正常。单在运行时报"数据库驱动包找不着"。在上边的文件的dependencies中添加 runtime 'postgresql:postgresql:9.1-902.jdbc4'后解决。

(2)插件安装时遇到的问题。我在一个项目中引入了两个插件shiro和quartz2。shiro依赖quartz-1.6.2.jar,而quartz2依赖quartz-2.0.0。两者冲突导致quartz2插件无法运行。卸载插件shiro,在上边文件的plugins中添加:

compile(':shiro:1.1.4'){//加上这句话后,安装插件和打包时也就不再引入shiro1.1.4所依赖的quartz-1.6.2.jar
            excludes "quartz"

}

重新安装shiro,解决问题。

可以看到,dependencies中你可以添加对jar包的依赖。grails会自动通过maven在定义好的库(repositories {}中定义)中找到并下载下来使用。插件对jar包依赖则定义在plugins中。

(3)我要在打包时往war包中添加一些文件。可以通过

grails.war.resources = { stagingDir, args ->copy(todir: "${stagingDir}/WEB-INF/classes"){fileset(dir:"grails-app/conf",includes:"log4jConf.groovy")}copy(todir: "${stagingDir}/WEB-INF/classes"){fileset(dir:"grails-app/conf",includes:"QuartzConfig.groovy")}}
来实现。这里为什么要拷贝这两个文件也是有原因的,以后会说明。

(4)Config.groovy。主要的配置文件。具体说明看官方文档。我遇到很多问题跟这个文件有关,后边会专门说明。

(5)DataSource.groovy:数据库配置文件。具体说明看官方文档。我遇到很多问题跟这个文件有关,后边会专门说明。

(6)UrlMapping.groovy:定义了grails项目中url的格式。我们一般不用动它。

1 0
原创粉丝点击