#grails
#grails
Вопрос:
Я хотел бы спросить, что я должен заменить ApplicationHolder, чтобы получить grailapplication. У меня есть следующий скрипт grails для запуска метода в службе grails.
import org.codehaus.groovy.grails.commons.ApplicationHolder
import de.rvgmbh.nemesis.migration.service.MasterDataMigrationService
def ctx = ApplicationHolder.getApplication().getMainContext()
def dataSource = ctx.getBean("dataSourceSybase")
def masterDataMigrationService = new MasterDataMigrationService(dataSourceSybase: dataSource)
if (masterDataMigrationService != null) {
masterDataMigrationService.partnerMigration()
}
else {
println "ist leider etwas falsches passiert"
}
dataSourceSybase — это компонент spring в resources.groovy. Что я должен сделать, чтобы заменить ApplicationHolder, поскольку теперь он устарел.
Заранее спасибо
Ответ №1:
Если это скрипт, который вы запускаете с помощью команды run-script, контекст уже введен в него для вас. Просто используйте переменную ctx. Нет необходимости определять его.
Комментарии:
1. да, это скрипт, который необходимо запустить с помощью команды run-script. Дело в том, хочу ли я изменить его на стандартный сценарий gant. Это не работает.
2. Затем вам следует обновить свой вопрос, чтобы уточнить, с чем вам нужна помощь.
Ответ №2:
includeTargets << grailsScript("Bootstrap")
target(main: "master data migration service") {
// TODO: Implement script here
depends(bootstrap)
bootstrap()
def dataSource = appCtx.getBean("dataSourceSybase")
def masterDataMigrationService = new MasterDataMigrationService(dataSourceSybase: dataSource)
if (masterDataMigrationService != null) {
masterDataMigrationService.partnerMigration()
}
else {
println "ist leider etwas falsches passiert"
}
}
setDefaultTarget(main)
Следующее — это то, что я пытаюсь преобразовать в скрипт gant. Он не может быть запущен
includeTargets << grailsScript("Bootstrap")
target(main: "master data migration service") {
// TODO: Implement script here
bootstrap()
def dataSource = appCtx.getBean("dataSourceSybase")
def masterDataMigrationService = new MasterDataMigrationService(dataSourceSybase: dataSource)
if (masterDataMigrationService != null) {
masterDataMigrationService.partnerMigration()
}
else {
println "ist leider etwas falsches passiert"
}
}
setDefaultTarget(main)