Springboot

Spring에서 XML 형식 응답 처리 방법

hyerann 2023. 12. 6. 22:36
Spring에서 API의 응답을 일반적인 JSON 형식이 아니라 XML 형식으로 응답하는 방법에 대해 정리합니다.

 

1. build.gradle에 jackson-dataformat-xml 라이브러리를 추가합니다.

https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml

를 참고하여 현재 프로젝트의 의존성에 맞는 버전으로 추가합니다.

implementation (group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version: '2.13.3')

 

2. JacksonConfig 클래스를 추가합니다.

@Configuration
public class JacksonConfig {

    @Bean
    public ObjectMapper xmlObejctMapper() {
        return new XmlMapper();
    }
}

 

3. WebMvcConfig 클래스를 추가합니다.

@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
   
    @Autowired
    private ObjectMapper xmlObjectMapper;

    @Overriede
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(new MappingJackson2xmlHttpMessageConverter(xmlObjectMapper));
    }
}

 

4. 응답 데이터 객체를 생성합니다.

@Data
@AllArgsConstructor
@JacksonXmlRootElement(localName = "Value")
public class Person {
    @JacksonXmlProperty(localName = "Name") private String name;
    @JacksonXmlProperty(localName = "Age") private int age;
}

 

5. Controller에 매핑 함수를 작성합니다.

@GetMapping(value = "/person", produces = MediaType.APPLICATION_XML_VALUE)
public Person getPerson() {
    return new Person("James", 30);
}