从我们的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对象。所以看起来豆接线毕竟不成功。任何帮助表示赞赏
答案 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'
]
}