Динамический доступ к DataSource в классном классе в Grails - PullRequest
1 голос
/ 17 февраля 2012

Мне нужно сделать прямой вызов sql, используя groovy.sql в не доменном классе.

Представьте, что у меня определены 10 различных источников данных.

Мне нужно выяснить, какой из них использовать, чтобы я мог заставить сервер выполнять пул соединений для меня. Я не хочу взламывать что-то, где мне нужно внедрить все источники данных в службу и передавать их, пока они мне не понадобятся.

Мне нужен код, который выглядит примерно так.

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

Как мне сделать вызов SystemMagic, как указано выше?

Спасибо, андрей

1 Ответ

1 голос
/ 17 февраля 2012

Так работает в Grails 1.3.7 ... Мне еще предстоит перейти на 2.0, однако ...

Предполагая, что это в Service

import org.springframework.context.*

class MyService implements ApplicationContextAware {
  ApplicationContext  applicationContext

  ...

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

  ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...