接线豆基于属性文件

问题描述:

我读过的各个岗位,如:接线豆基于属性文件

link1 link2

但他们没有为我工作。

这里是我目前(碎)resources.groovy文件:

beans = { 

    def instance = Class.forName(grailsApplication.config.foo.bar) 
    exampleService(instance) 
} 

foo.bar在属性文件中的值是一个类名(实现ExampleService)。

可以这样做吗?

+0

我有同样的关注和此页帮我:HTTP://博客.lidalia.org.uk/2010/06 /注入豆成 - Grails的-controller.html – JLBarros 2012-04-10 17:40:23

在以前的项目中,我们根据环境变量对bean使用不同的类。我们从服务接口开始,根据命名约定找到我们想要使用的实现类,如下面的代码片段所示。

与您的代码的唯一区别是我们使用服务接口的类加载器来检索实现类。另一种选择是grailsApplication.config.foo.bar不包含正确的值。

在的grails-app/conf目录/弹簧目录我们的豆文件包含下面的代码加载正确的实现类:

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