2012-02-17 77 views
1

我需要在非域類使用groovy.sql直接SQL調用。訪問數據源Grails的動態

想象我已經定義了10點不同的數據源。

我需要能夠找出使用哪一個,這樣我可以得到服務器爲我做連接池。我不想破解一些我需要將所有數據源注入到服務中的東西,並將它們傳遞給我,直到我需要它們。

我想代碼,看起來有點像這樣。

Integer sn = getShardNumber(somedata) 
def dataSourceName = "shard" + sn.toString() 
def dataSource = SystemMagic.getDataSource(dataSourceName) 
def sql = new Sql(dataSource) 
.... 

如何使上述「SystemMagic」調用?

感謝, 安德魯

回答

1

這是它的Grails 1.3.7的工作方式......我還沒有遷移到2.0然而...

假設這是一個Service

import org.springframework.context.* 

class MyService implements ApplicationContextAware { 
    ApplicationContext applicationContext 

    ... 

    def getDataSource(name) { 
    applicationContext.getBean(name) 
    } 

    ... 
} 
+0

順便說一句,如果我的服務我不是,只是一個實用程序,Groovy類,你有另一種方式來獲得ApplicationContext的? – Andrew 2012-02-18 04:25:37