是否可以更改bean的属性(为服务定义)并在应用程序运行时重新加载它?

时间:2013-10-01 11:32:44

标签: spring grails groovy javabeans

我使用Spring将使用OSGi开发的简单CRUD应用程序迁移到Grails。我将所有REST资源转换为控制器和HTML页面到GSP视图,保留其余的Java代码。

我有一个DBService服务,可以帮助连接到数据库并在其上运行查询,还有一个ProcessorService,它使用DBService来执行业务操作。

我为这些服务创建了bean,如下所示:

beans = {

    dbServiceBean(DBService, "test_db")

    processorServiceBean(ProcessorService,ref("dbServiceBean"))

}

使用上面的配置一切正常。

现在,我希望应用程序能够处理多个DB(多租户)。但是,我不会事先知道数据库的名称,因此我无法预定义dbServiceBean列表。

是否可以使用动态获取的值重建/重新加载bean,并在应用程序运行时重新加载依赖bean?

1 个答案:

答案 0 :(得分:0)

Grails已经可以选择使用multiple datasources

您可以更改DBService以从配置的数据源获取连接。如果您只是将其更改为Groovy类并将其放在grails-app/service中,您将get transactions and dependency injection by attribute name for free