grails - 使用 PostContstruct 将服务注入(inject)标签库

标签 grails dependency-injection taglib

我有一个带有 PostConstruct 注释的 init 方法的服务,以确保它在依赖注入(inject)完成之前不会运行。

@PostConstruct
private void init() {
     // Create some datasources on the fly
     MyDomain.list().each {
          createDataSource(it)
     }
}

我现在需要将此服务注入(inject) taglib,但应用程序将无法启动并出现以下错误..

java.lang.IllegalStateException: Method on class [com.me.MyDomain] was used outside of a Grails application



堆栈跟踪特别指出了上面的用法,当然当我删除它时它启动得很好。
有谁知道解决这个问题的“可靠”方式?

最佳答案

试试看:

@PostConstruct
void init() {
    Domain.withNewSession {
        println Domain.count
    }
}

或者
@PostConstruct
void init() {
    Domain.withTransaction {
        println Domain.count
    }
}

关于grails - 使用 PostContstruct 将服务注入(inject)标签库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48320356/

相关文章:

grails - 向公历添加小时的问题

c# - 依赖注入(inject) : How to pass the injection container around?

java - 如何将应用程序上下文注入(inject)到 AspectJ 切面中?

java - Spring中的依赖注入(inject)在这个语句中是如何工作的?

Java Spring MVC View 渲染并将 ArrayList<CustomModel> 通过表单提交绑定(bind)回 Controller

grails - doWithDynamicMethods访问服务

session - Grails session.user,用户已登录

grails - 在身份验证失败的情况下获取网址

c++ - 标签库 : how to edit Album Artist?

.flac 和 .asf 文件中的 C++ Taglib 封面艺术