-
HTTP 메시지 컨버터 : XMLSPRING/스프링 MVC 2021. 6. 19. 00:13
OXM(Object-XML-Mapper) 라이브러리 중에 스프링이 지원하는 의존성 추가
- JacksonXML
- JAXB
스프링 부트를 사용하는 경우에도 기본으로 XML 의존성을 추가해주지 않음.
<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> </dependency> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>${spring-framework.version}</version> </dependency>
Mashaller 등록
@Configuration public class WebConfig implements WebMvcConfigurer { @Bean public Jaxb2Marshaller jaxb2Marshaller() { Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller(); // Person 클래스를 XML로 변경할 패키지에 등록 jaxb2Marshaller.setPackagesToScan(Person.class.getPackageName()); return jaxb2Marshaller; } } // 도메인 클래스에 @XmlRootElement 추가 @XmlRootElement @Entity public class Person { @Id @GeneratedValue private Long id; private String name; public String getName() { return name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public void setName(String name) { this.name = name; } }
테스트 코드
@Test public void xmlMessage() throws Exception { Person person = new Person(); person.setId(2019l); person.setName("jump"); StringWriter stringWriter = new StringWriter(); Result result = new StreamResult(stringWriter); marshaller.marshal(person, result); String xmlString = stringWriter.toString(); this.mockMvc.perform(get("/jsonMessage") .contentType(MediaType.APPLICATION_XML) .accept(MediaType.APPLICATION_XML) .content(xmlString)) .andDo(print()) // 요청과 응답을 출력 .andExpect(status().isOk()) .andExpect(xpath("person/name").string("jump")) .andExpect(xpath("person/id").string("2019")); }
POSTMAN 테스트
'SPRING > 스프링 MVC' 카테고리의 다른 글
요청 맵핑하기 1부 : HTTP METHOD (0) 2021.06.20 기타 WebMvcConfigurer 설정 (0) 2021.06.19 HTTP 메시지 컨버터 : JSON (0) 2021.06.18 HTTP 메시지 컨버터 : 개요 (0) 2021.06.18 Resource Handler (0) 2021.06.16