Grails autowire внутри конвертера Spring

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

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, чтобы у меня все еще была моя автопроводка


person Jackie    schedule 25.06.2014    source источник


Ответы (1)


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

<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>

Поэтому вам нужно объявить свой преобразователь, а также службу преобразования в файле resources.groovy.

person Community    schedule 27.06.2014
comment
В значительной степени правильно, но я бы порекомендовал сделать это в заводном файле, как вы намекаете, вместо этого. вместо этого (именно так я это сделал). XML-файлы немного старомодны :-) - person Jackie; 28.06.2014
comment
Да, я только что вставил версию Spring, чтобы вы могли перевести ее в версию Groovy DSL. - person ; 01.07.2014