使用Grails / Groovy注入构造函数参数Spring Resource文件

时间:2014-03-14 08:48:42

标签: spring grails groovy resources classpath

从我们的Grails / Groovy应用程序中,我们需要使用来自遗留Java服务类的服务,其构造函数具有类型为org.springframework.core.io.Resource的参数,例如:

public ServiceClass(Resource someResource)

我们需要使用Spring DSL将服务类的实例注入我们应用程序的Groovy类,资源引用/ src / main / resources中的XML文件。我试图为此目的创建Spring配置,但到目前为止我找不到一个可行的解决方案。配置文件的相关部分如下所示

beans = {
    xmlns aop:"http://www.springframework.org/schema/aop",
    sec:"http://www.springframework.org/schema/security",
    context:"http://www.springframework.org/schema/context"

    serviceClass(com.somepackage.ServiceClass) {
      //here we need to refer to the constructor arg XML file some way
    }
}

我尝试了各种教程中的多种语法,例如:关闭beanDefinition.constructorArgs,但遗憾的是到目前为止没有成功。虽然应用程序编译(grails:war)和启动(grails:run-app)都没有表明bean布线有任何问题,但当应用程序实际加载到浏览器中时,我们收到一个NPE,说明我们的Groovy类到哪个注入服务类,是一个null对象。所以看起来豆接线毕竟不成功。任何帮助表示赞赏

1 个答案:

答案 0 :(得分:5)

在修复了项目设置本身和多次清理/重新编译的各种问题后,似乎以下两种方法都可以

serviceClass(com.somepackage.ServiceClass, '/WEB-INF/constructor-arg-xml-file.xml') {}

serviceClass(com.somepackage.ServiceClass) { bean ->
        bean.constructorArgs = [
            '/WEB-INF/constructor-arg-xml-file.xml'
        ]
    }