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')
}

我也有同样的担忧,这一页帮助了我: