Я обновляю приложение Grails от версии 2.0 до 2.5.4 и сталкиваюсь с NullPointerException, поскольку dataSource имеет значение null. Этот код отлично работал в версии Grails версии 1.3, 2.0, но не в версии 2.5. Ниже приведен код:Обновление версии Grails 2.5 - dataSource is null
resources.groovy
import org.springframework.jdbc.core.JdbcTemplate
...
jdbcTemplate(JdbcTemplate) {
dataSource = ref('dataSource')
...
}
DataSource.groovy
dataSource {
configClass = GrailsAnnotationConfiguration.class
pooled = true
autoreconnect= true
}
hibernate {
generate_statistics=true
cache.use_second_level_cache=true
cache.use_query_cache=true
cache.region.factory_class = 'org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory'
}
environments {
development {
dataSource {
driverClassName = "com.mysql.jdbc.Driver"
username = "test"
password = "test"
dbCreate = "update" // one of 'create', 'create-drop','update'
pooled = true
jmxExport = true
url = "jdbc:mysql://host:port/dbName?autoReconnect=true"
}
}
}
Класс обслуживания
def jdbcTemplate
def someMethod(){
jdbcTemplate.queryForList(somequery)
}
Исключение: Не удается вызвать метод queryForList() на нуль объект. StackTrace следующим образом: сообщение: Не удается вызвать метод queryForList() на нулевой объект
Отредактировано: несколько замечаний: 1. Db opetaions как DomainClass.list() работают нормально, данные извлекаются из БД 2. Защиту jdbcTemple - Экземпляр jdbTemplate создается в классе BootStrap.groovy, но он недействителен в классах обслуживания и контроллера
Да, я запускаю приложение grails run-app, и оно выполняется в среде разработки, а также пыталось поместить те же данные dev db во все среды, но с той же ошибкой. – nshweta
@nshweta Чувствуйте себя как ошибка, поднимите свою проблему на https://github.com/grails/grails-core/issues с воспроизводимым футляром. Если вы хотите посмотреть, что происходит, установите уровень журнала для отладки/информации и посмотрите, не вызвала ли весна какая-либо ошибка при создании компонента. – Raviteja