Автоматический преобразователь внутренней пружины Grails

#grails

#grails

Вопрос:

У меня есть что-то вроде этого…

 class DomainConverter implements GenericConverter {
    private Class<Domain> classOfDomain;
    private Class<DomainCommand> classOfDomainCommand;
    public Set<GenericConverter.ConvertiblePair> getConvertibleTypes() {
        Set<GenericConverter.ConvertiblePair> convertiblePairs = new HashSet<GenericConverter.ConvertiblePair>();
        convertiblePairs.add(new GenericConverter.ConvertiblePair(classOfDomain, classOfDomainCommand));
        convertiblePairs.add(new GenericConverter.ConvertiblePair(classOfDomainCommand, classOfDomain));
        return convertiblePairs;
    }
    public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
        if (classOfDomain.equals(sourceType.getType())) {
            return this.convert((Domain) source);
        } else {
            return this.convertBack((DomainCommand) source);
        }
    }
    protected DomainCommand convert(Domain definition){
        ...
    }
    protected Domain convertBack(DomainCommand command){
        ...
    }
}
 

Должен ли я подключать его к классу или добавлять в resources.groovy?

Как мне создать DomainCommand, чтобы у меня все еще была моя автоматическая проводка

Ответ №1:

Просматривая документацию Spring, вы можете увидеть пример объявления компонента:

 <bean id="conversionService"
      class="org.springframework.context.support.ConversionServiceFactoryBean"/>

<bean id="conversionService"
      class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
            <bean class="example.MyCustomConverter"/>
        </list>
    </property>
</bean>
 

Итак, вам нужно объявить свой конвертер, а также ConversionService в вашем resources.groovy файле.

Комментарии:

1. В значительной степени верно, но я бы рекомендовал делать это в файле groovy, как вы намекаете, вместо этого. вместо этого (вот как я в итоге это сделал). XML-файлы немного старомодны 🙂

2. Да, я только что вставил версию Spring, чтобы вы могли перевести ее в версию Groovy DSL.