ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP 메시지 컨버터 : XML
    SPRING/스프링 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
Designed by Tistory.