拆分resources.groovy(Grails 2.5)使其模块化

时间:2017-10-25 11:12:25

标签: java spring grails groovy grails-2.0

我的Grails项目的resources.groovy正在增长,所以我想把它拆分成一些更容易维护的逻辑文件。在阅读了一些问题,博客后,我了解了importBeans或loadBeans。仅当使用grails run-app运行应用程序时,此方法才有效。但是我们创建一个war并将其部署在JBoss上,无法访问自定义bean文件。 也尝试下面没有运气 - 这里提到 -  Load spring beans from custom groovy files in grails app

grails.war.resources = { stagingDir, args ->
  copy(todir: "${stagingDir}/WEB-INF/classes/spring") {
     fileset(dir:"grails-app/conf/spring") {
        include(name: "datasourceDefinitions.groovy")
        exclude(name: "resources.groovy")        
      }
  }
}

我在grails-app / conf / spring中添加了datasourceDefinitions.groovy。 请帮忙。

1 个答案:

答案 0 :(得分:1)

问题是由于Spring bean配置文件被移动到WAR文件内的文件夹“WEB-INF / classes / spring /”(确保文件打包在.war中)。正如我所做的那样是在resources.groovy中找到资源路径。

def loadFromFile = { name ->
    importBeans("file:grails-app/conf/spring/"+name)
}

def loadFromWar = { name ->
    def resource = application.parentContext.getResource("WEB-INF/classes/spring/"+name)
    loadBeans(resource)
}
def loadResource = application.isWarDeployed() ? loadFromWar : loadFromFile

loadResource "datasourceDefinitions.groovy"
loadResource "anotherBean.groovy"