【问题标题】:Is that possible to read data from Database into Config.groovy?是否可以将数据库中的数据读取到 Config.groovy 中?
【发布时间】:2015-10-14 10:40:01
【问题描述】:

我需要从数据库中读取数据才能读入 Config.groovy。

是否可以从数据库中获取数据到 Config.groovy 中?

【问题讨论】:

    标签: grails grails-plugin grails-2.0 grails-3.0


    【解决方案1】:

    不,这是不可能的。在 Grails 应用程序启动时的事件序列中,Config.groovy 在数据源对应用程序可用之前被处理。

    在不知道您要完成什么的情况下,我无法就如何解决此问题提出建议。

    更新(基于评论)

    在您的评论中,您解释说您正在尝试使用功能切换插件(该插件旨在运行时而不是持久性)。查看插件的source code,您应该能够创建自己的服务,该服务将从数据库加载设置并切换/更新功能开关设置。这只是一个简单的草图/示例:

    package example
    
    import org.springframework.beans.factory.InitializingBean
    
    class MyExampleService implements InitializingBean {
      def grailsApplication
      void afterPropertiesSet() {
        // here is where you would do whatever you needed to load the settings
        grailsApplication.config.features['somefeature'].enabled = true
        grailsApplication.config.features['otherfeature'].enabled = false
      }
    }
    

    这至少应该给你一个想法。

    或者,您也可以将其全部写入Bootstrap.groovy,它也可以访问数据源/GORM。

    【讨论】:

    • 嗯,有一个用于 grails 的功能切换插件 (github.com/antony/grails-feature-switch/blob/master/…) ...但它不是持久的,所以每次我重新启动服务器时,该值都会变为默认值。我想让这个插件持久化。问题是它被配置到 Config.groovy 中......你有一些链接与你所说的关于在数据源之前处理 Config 的信息吗?
    • 我看到了你的更新。它真的奏效了。太感谢了!反正有没有覆盖控制器?因为现在当用户从他们从 localhost:8080/your-app/admin/features 提供的屏幕切换功能时,我需要更新数据库
    • 这是另一个问题,但是是的。您可以简单地在应用程序中创建一个具有相同名称和包的控制器,它将覆盖插件中的控制器。这样你就可以用你想要的任何东西替换它。
    • 成功了。谢谢!我创建了一个新的控制器来覆盖插件的控制器并修改了 modifyFeature 方法。问题解决了! :-)
    猜你喜欢
    • 1970-01-01
    • 2023-02-02
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 2021-08-26
    • 1970-01-01
    相关资源
    最近更新 更多