Grails 基于属性文件的连接bean
我读过很多帖子,比如: 但是没有一个为我工作 下面是我当前(已损坏的)Grails 基于属性文件的连接bean,grails,groovy,Grails,Groovy,我读过很多帖子,比如: 但是没有一个为我工作 下面是我当前(已损坏的)resources.groovy文件: beans = { def instance = Class.forName(grailsApplication.config.foo.bar) exampleService(instance) } 属性文件中foo.bar的值是类的名称(实现ExampleService) 可以这样做吗?在上一个项目中,我们根据环境变量为bean使用了不同的类。在这里,我们从服务
resources.groovy
文件:
beans = {
def instance = Class.forName(grailsApplication.config.foo.bar)
exampleService(instance)
}
属性文件中foo.bar
的值是类的名称(实现ExampleService
)
可以这样做吗?在上一个项目中,我们根据环境变量为bean使用了不同的类。在这里,我们从服务接口开始,根据命名约定查找要使用的实现类,如下面的代码段所示 代码的唯一区别是我们使用服务接口的类加载器来检索实现类。另一个选项当然是grailsApplication.config.foo.bar不包含正确的值 在grails app/conf/spring目录中,我们的bean文件包含以下代码以加载正确的实现类:
beans = {
addressService(getImplementation(AddressService))
appointmentService(getImplementation(AppointmentService))
}
def getImplementation(Class service) {
if (CH.config.mockAllServices == 'true' || CH.config."mock${service.simpleName}" == 'true') {
return service.classLoader.loadClass(service.name + 'Mock')
}
return service.classLoader.loadClass(service.name + 'Impl')
}
我也有同样的担忧,这一页帮助了我: