Статьи

Конфигурация источника данных Grails 3

Grails 3 имеет новые файлы конфигурации и формат. Новый формат основан на YAML, а имя файла для конфигурации базы данных — grails-app / conf / application.yml. Я только начинаю работать с Grails 3 после разработки приложений на Grails pre-1, 1 и 2. Я с нетерпением ждал создания нового приложения Grails 3.

Прежде чем начать, я прочитал заметки по обновлению Grails 2 до Grails 3 и чувствовал себя довольно уверенно. Но вчера я столкнулся с проблемой, которую я решил описать здесь, если она вам поможет.

Во-первых, вот рабочий фрагмент application.yml, источник данных которого настроен для mySQL

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dataSource:
    pooled: true
    jmxExport: true
    # driverClassName: org.h2.Driver
    driverClassName: com.mysql.jdbc.Driver
    # dialect: org.hibernate.dialect.MySQL5InnoDBDialect
    username: root
    password: root
  
environments:
    development:
        dataSource:
            # dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
            dbCreate: create
            url: jdbc:mysql://localhost/demo?autoReconnect=true

Но здесь вы должны быть осторожны.

Убедитесь, что вы не используете старый формат <variable_name> = «<setting>» в файлах YAML. Что я имею в виду? Ну, вот пример:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dataSource:
    pooled: true
    jmxExport: true
    # driverClassName: org.h2.Driver
    driverClassName: com.mysql.jdbc.Driver
    # dialect: org.hibernate.dialect.MySQL5InnoDBDialect
    username: root
    password: root
  
environments:
    development:
        dataSource:
            # dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
            dbCreate = "create"
            url = "jdbc:mysql://localhost/demo?autoReconnect=true"

У меня была конфигурация источника данных Grails 3 таким образом, и я получал ошибки при запуске приложения grails run:

1
2
ERROR org.springframework.boot.SpringApplication - Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'persistenceInterceptor': Cannot resolve reference to bean 'hibernateDatastore' while setting bean property 'hibernateDatastore'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'hibernateDatastore' is defined

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

Ссылка: Конфигурация источника данных Grails 3 от нашего партнера по JCG Тодда МакГрата в блоге Supergloo .