在 grails 服务中获取特定于环境的服务器应用 URL

Get environment specific server app URL in grails service

我想在 Groovy 中获取服务器 URL,如果我在我的本地环境中部署我希望它 link 到 localhost:8080 但是在测试和生活环境应该不同吧。在我的 Groovy 服务中有什么方法可以做到这一点吗?

你的Config.groovy

environments {
    development {
         grails.config.serverAppURL = YOUR_DEVELOPMENT_MODE_APP_URL 
    }
    production {
         grails.config.serverAppURL = YOUR_PRODUCTION_MODE_APP_URL
    }
    test {
         grails.config.serverAppURL = YOUR_TEST_MODE_APP_URL
    }
}

在您的服务中访问这个url

Class MyService {
   def grailsApplication // inject this service

   def testMethod(){
    def appUrl = grailsApplication.config.serverAppURL // getting url here
    println appUrl
   }

}

配置您的 grails 应用程序

environments {
    development {
         grails.server.url = "localhost:8080"
    }
    production {
         grails.server.url = "http://example.com"
    }
    test {
         grails.server.url = "http://production.com"
    }
}

您可以像这样使用 Holders 获取您的服务器 URL。

class something {

    String getAppURL() {
      String serverURL = Holders.flatConfig.get("grails.server.url")
      return serverURL
    }
}