【问题标题】:External configuration of non controller or taglib classes非控制器或 taglib 类的外部配置
【发布时间】:2012-06-14 19:59:58
【问题描述】:

我正在尝试为非控制器或 taglib 类创建外部配置,因为这些值需要在不重新编译的情况下更改。现在 ConfigurationHolder 和 ApplicationHolder 已被弃用,对此我有什么选择?

我已经完成了大约 3 个小时的谷歌搜索,似乎自从这些课程被弃用以来,有人想出的唯一一件事就是使用 DI。但是,我需要此配置以某种方式位于 WAR 文件的外部,所以我不知道这是否对我有帮助,除非我遗漏了什么?

谢谢

【问题讨论】:

  • 只是想澄清一下“配置”是什么意思-您指的是系统范围的设置吗?例如,如果您正在创建一个银行应用程序,您将需要能够设置/修改默认利率。如果是这样,我会查看设置插件。
  • 正确。我会看看那个插件提供了什么,谢谢!

标签: java grails groovy


【解决方案1】:

看看你的默认配置文件的第一行...

如果您取消注释此代码,您将获得一个在应用程序启动时读取的外部配置。

因此,如果配置发生更改,您不必重新编译而是重新启动应用程序。由于很多管理员会在夜间自动重启应用服务器,这应该不是什么大问题吧?

// locations to search for config files that get merged into the main config
// config files can either be Java properties files or ConfigSlurper scripts

// grails.config.locations = [ "classpath:${appName}-config.properties",
//                             "classpath:${appName}-config.groovy",
//                             "file:${userHome}/.grails/${appName}-config.properties",
//                             "file:${userHome}/.grails/${appName}-config.groovy"]

// if(System.properties["${appName}.config.location"]) {
//    grails.config.locations << "file:" + System.properties["${appName}.config.location"]
// }

要从 /src/groovy 中访问配置,请查看以下问题:How to access Grails configuration in Grails 2.0?

顺便说一句:是的,configurationHolder 已被弃用,但它仍然有效:-)

【讨论】:

  • 这是我想走的路线,但只能通过 GrailsApplication 类访问这些外部位置中的值,该类仅对控制器和标记库可用(我需要这些值可用于 src/groovy 中的常规课程)
【解决方案2】:

根据我从 js3v 得到的回复,我建议查看 Settings plugin。它为您提供了一种非常好的方式来输入这些类型的项目和一个基本的 CRUD 界面来管理它们。您可以有 String、Integer、Date 和 BigDecimal 类型。您可以创建名称来对它们进行分段(如 admin.email.defaultGreetingbanking.defaultInterestRate)并在 gsp 或控制器/服务/域类中访问它们,如下所示:

//gsp
<g:setting valueFor="admin.email.defaultGreeting" default="Hello!" encodeAs="HTML"/>

//Other
import org.grails.plugins.settings.*
Setting.valueFor("admin.email.defaultGreeting", "Hello!")

【讨论】:

  • 我一直在试验,您可以在 conf/spring/resources.groovy 类中使​​用 spring 管理类,然后您可以在外部设置这些 bean 的属性。这可能是我会选择的,但你的解决方案也解决了我的问题,而不使用不推荐使用的东西,所以你得到了接受。干杯。
猜你喜欢
  • 2017-04-11
  • 2020-12-25
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
相关资源
最近更新 更多