3

我进行了以下替换以将我的应用程序和插件升级到 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 man中。

女巫不清楚的是:

  1. 什么是替代品:

    grailsDomainClass.getPropertyValue(propertyName)
    
  2. doWithSpring我应该将插件中的代码放在哪里?

手册页说:

解决方案是将在上下文可用之前执行的任何逻辑移动到在上下文可用之后执行的其他地方。

其他地方?有doWithContext关闭吗?可以用来注入bean吗?

4

1 回答 1

3
  1. 使用ClassPropertyFetcher.getPropertyValue方法

  2. doWithApplicationContext是一种可用于覆盖插件的方法,您可以在其中放置逻辑。

于 2017-08-21T13:23:08.730 回答