Обновление с Grails 3.2 до Grails 3.3, GrailsDomainClass API устарел

Я сделал следующие замены, чтобы обновить свои приложения и плагины до версии grails 3.3. (изменение имени переменной связано с улучшением ясности замен.)

Грааль 3.2:

Class<?> clazz = grailsDomainClass.clazz
...

def grailsDomainClass = new DefaultGrailsDomainClass(clazz)
...

GrailsDomainClassProperty[] properties = grailsDomainClass.properties
...

def propertyName = grailsDomainClass.propertyName
...

def referenceType = grailsDomainClassProperty.referencedPropertyType
...

Грааль 3.3:

Class<?> clazz = persistentEntity.javaClass
...

def persistentEntity = grailsApplication.mappingContext.getPersistentEntity(DomainClass.class.name)
...

PersistentProperty[] properties = persistentEntity.persistentProperties
...

def propertyName = persistentEntity.decapitalizedName
...

def referenceType = persistentProperty.type

Другие изменения находятся в руководстве по Grails 3.3.

Ведьма не ясно это:

  1. Чем заменить:

    grailsDomainClass.getPropertyValue(propertyName)
    
  2. Куда мне поместить код, который находится в doWithSpring моих плагинов?

На странице руководства говорится:

Решение состоит в том, чтобы переместить любую логику, которая выполняется до того, как контекст станет доступным, в другое место, которое будет выполняться после того, как контекст станет доступным.

Где-то еще были? Есть ли закрытие doWithContext? Его можно использовать для инъекций бобов?


person wladimirguerra    schedule 21.08.2017    source источник


Ответы (1)


  1. Используйте метод ClassPropertyFetcher.getPropertyValue

  2. doWithApplicationContext — это метод, который можно переопределить для плагинов, в которые вы можете поместить свою логику.

person James Kleeh    schedule 21.08.2017
comment
в хранилище данных Grails 6.0.9 org.grails.datastore.mapping.reflect.ClassPropertyFetcher может возвращать нестатическое значение свойства. Но в версии 6.1.6 можно извлечь только значение статического свойства. Что изменилось? - person Mamun Sardar; 05.09.2017