일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- assertj
- JPA
- apache
- Producer
- 페이스북
- 스프링부트
- clean code
- 스프링 부트
- g1
- JWT
- 비동기
- 시큐리티
- 페이징
- spring boot
- load balancing
- java
- 리팩토링
- 클린코드
- 권한
- tomcat
- oauth2
- RabbitMQ
- Refactoring
- jvm
- gdg
- GC
- Spring
- Security
- 스프링
- OAuth
Archives
- Today
- Total
허원철의 개발 블로그
Spring Boot - Custom Jackson Converter 본문
이번 글은 Jackson Converter를 커스텀 작업을 위한 글입니다.
What..?
jackson - 자바 객체를 JSON으로 변환하거나 JSON을 자바 객체로 변환해주는 라이브러리
Spring 과는 달리 레퍼런스 문서에 의하면 Spring Boot 에서는 jackson 이 기본적으로 포함되어 있습니다.
-- 문서 내용
Spring MVC (클라이언트와 서버 측)는 HttpMessageConverters를 사용하여 HTTP 통신에 변환을 합니다. Jackson이 classpath에 있다면 Jackson2ObjectMapperBuilder가 제공하는 Converter를 이미 얻습니다. 자동 구성된 Jackson2ObjectMapperBuilder bean에 적용되며 자동 구성된 ObjectMapper bean을 포함하여 빌더를 사용하여 작성된 모든 맵퍼에 적용됩니다.
Spring은 HttpMessageConverters를 사용하여 @ResponseBody (또는 @RestController의 응답)를 렌더링합니다. 스프링 부트 컨텍스트에서 그 유형의 bean을 추가함으로써 추가 Convertor를 제공 할 수 있습니다.
Why...?
- Convertor를 추가 및 수정이 가능하다면, 많은 번거로움이 사라집니다. Http 통신간에 암호화를 하는 것들은 Custom Converter를 만들면 되고, 특정 Column을 변경할 수 있습니다..
- 이번에는 간단하게 Base64를 이용한 암호화 통신을 해보도록 하겠습니다.
How..!
1. Gradle 설정
2. Controller 설정
3. Config 설정
4. Component 설정
5. Test & Result
1. Gradle 설정
- 추가로, Entity를 Getter/Setter 어노테이션을 위해 lombok을 넣어줍니다.
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.projectlombok:lombok:1.16.10')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
- 임의로 리스트를 주고 받는 맵핑을 만듭니다.
- 지금 상태의 결과를 출력하게 된다면 기본적인 json 이 출력이 됩니다.
3. Config 설정
- 이제 Custom ObjectMapper 추가해보록 하겠습니다.
- 24~31 Lines : Component로 만들어둔 serializer 와 deserializer, 그리고 ObjectMapper를 Custom한 mapper 입니다.
- 33~37 Lines : Converter에 Mapper에 추가해줍니다.
4. Component 설정
- JsonSerializer 상속받은 클래스를 구성합니다.
- 시작과 끝을 잡고 키와 값을 넣을 수 있습니다.
- 여기서 String 값을 Spring Boot 에서 Base64Utils 를 이용하여 암호화한다.
- JsonDeserializer 상속받은 클래스를 구성합니다.
- ObjectCodec, 과 JsonNode 를 이용하여 Model를 Map 형식으로 받아올 수 있습니다.
5. Test & Result
- name 필드의 값이 암호화 된 것을 볼 수 있습니다.
- Converter로 인해 서버 로그상에서 복호화된 name 필드에 값들을 볼 수 있습니다.
'web' 카테고리의 다른 글
Spring Boot - Async (412) | 2016.12.05 |
---|---|
Spring Boot - Swagger (411) | 2016.12.05 |
Spring Boot - Cache (412) | 2016.12.05 |
Spring Boot - Test (406) | 2016.12.05 |
Spring Boot - AOP (424) | 2016.12.04 |
Comments