Замена держателя приложения Grails

#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)