Преобразование конфигурации Spring на основе XML в конфигурацию на основе Java

Я стараюсь не использовать xml.

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">

    <property name="messageConverters">
        <list>
            <bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
                <property name="marshaller" ref="jaxbMarshaller"/>
                <property name="unmarshaller" ref="jaxbMarshaller"/>
            </bean>
            <bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
        </list>
    </property>
</bean>

как этот: преобразовать в @Bean

@Bean
public RestTemplate restTemplate() {
    RestTemplate restTemplate = new RestTemplate();
    List<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>>();

    converters.add(marshallingMessageConverter());
    restTemplate.setMessageConverters(converters);

    return restTemplate;
}

Проблема здесь.

<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>
            <value>com.cloudlb.domain.User</value>
        </list>
    </property>
</bean>

Попробуйте преобразовать «com.cloudlb.domain.User» в класс [], но это не сработает.

@Bean
public MarshallingHttpMessageConverter marshallingMessageConverter() {
    Jaxb2Marshaller marshaller = new Jaxb2Marshaller();

    //
    List<Class<?>> listClass = new ArrayList<Class<?>>();
    listClass.add(User.class);

    marshaller.setClassesToBeBound((Class<?>[])listClass.toArray());
    // --------------------------------

    return new MarshallingHttpMessageConverter(marshaller, marshaller);
}

Ошибка: проблема с кастингом.

Заранее спасибо.


person xyzxyz442    schedule 03.01.2012    source источник
comment
опубликуйте ошибку, которую вы получаете   -  person Aravind Yarram    schedule 04.01.2012
comment
Разве <list> не следует преобразовывать в List, а не в массив?   -  person Thomas    schedule 04.01.2012
comment
@Thomas: <list> будет принужден к тому, что необходимо, например. List или массив.   -  person skaffman    schedule 04.01.2012


Ответы (1)


setClassesToBeBound принимает список vararg, поэтому вы можете просто сделать это:

Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(User.class);
person skaffman    schedule 03.01.2012