Spring MVC 에서는 REST API 을 지원하기 위해 Jackson 라이브러리를 이용하여 response 을 Json 형태로 변경하여 제공하는 기능을 포함하고 있습니다. 또한 @RequestBody 을 이용해 @RequestMapping 으로 선언된 method 의 매개변수로 Json 으로 된 body 을 POJO 로 받을 수도 있습니다. 이러한 처리를 위해 Spring 은 Json 혹은 XML 등의 여러 형태의 값을 자동으로 처리하기 위해 MessageConverter 을 등록해두는데, HttpMessageConverter 인터페이스를 구현한 것을 개발자가 상속받아 변경하여 사용할 수 있습니다. Jackson 은 MappingJackson2HttpMessageConverter 을 제공하는데, 이..
Spring Boot 에서 Json 을 처리하기 위해 Jackson 라이브러리가 기본적으로 의존성 관계를 가지고 내려받게 되어 있습니다. 이를 Gson 으로바꿔서 사용하는 분들도 계시겠지만, Jackson 은 성능이나 기능에서 훌륭한 편이기 때문에 그대로 사용해도 좋습니다. Spring Boot 의 application.properties 에서 Jackson 의 설정을 아래와 같이 일부 할 수 있습니다. [출처] https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html # JACKSON (JacksonProperties) spring.jackson.date-format= # Date fo..
Spring 에서 @Async 을 이용해서 쉽게 비동기 method 을 만들 수 있습니다. 대략 다음과 같이 method 정의를 먼저 할 수 있을 겁니다. @Async public CompletableFuture async(String param1, int param2) { return CompletableFuture.completedFuture(param1 + " : " + param2); } 그리고 이를 다음과 같이 사용할 수 있겠죠. CompletableFuture result = service.async("status", 100); 하지만, 이렇게 그냥 사용할 경우 @Async 는 SimpleAsyncTaskExecutor 을 기본 TaskExcutor 로 이용하기 때문에 async method ..
2019/01/21 - [Programming/기타] - 페이징(Paging)에 대한 이해 - (2) ROW NUMBER 을 이용한 게시물 가져오기 이번에는 MySQL 이나 PostgreSQL 등에서 사용하는 LIMIT 와 MS SQL Server 의 예전 페이징 기법인 TOP 에 대해서 알아보겠습니다. 먼저 LIMIT 는 게시물을 가져오는데 최적의 방법을 제공합니다. 하지만 동일한 LIMIT 라는 이름이라도 사용방법은 사실 좀 다릅니다. 앞선 글에서 ROW NUMBER 을 이용하는 방식에서 설명 드렸듯이 순차적으로 내용을 정렬한 뒤 여기에 번호를 붙여서 번호 범위를 이용해서 게시물을 가져온다고 하였습니다. 하지만, 이렇게 번호를 붙이는 것은 LIMIT 와 같은 기능을 가지고 있지 않을 때의 이야기입니다..
2019/01/21 - [Programming/기타] - 페이징(Paging)에 대한 이해 - (1) 페이지 번호를 생성하자. 이번에는 DBMS 에서 ROW NUMBER(오라클의 rownum, SQL Server 의 ROW_NUMBER(), MySQL 의 변수를 이용한 번호 등)을 이용한 게시물 가져오기에 대해서 설명하겠습니다. ROW NUMBER 는 쉽게 말해 출력되는 결과물에 순차적인 번호를 달아주는 기능입니다. 필요할 때 언제든지 번호를 달아달라고 시스템에 요청을 하면 사용자에게 보내줄 데이터에 번호를 달아주게 되죠. 문제는 이 번호를 달 때 정렬이 되어 있지 않다면 번호를 엉뚱하게 달 수도 있고, 번호를 단다는 것 자체가 시스템에 부하를 줘서 정말 많은 게시물을 가지고 있는 경우 특정 영역의 게시..
페이징에 대한 이해를 하기 위해서는 페이징을 하기 위해 각 DBMS 가 어떤 정보를 제공해줘야 하는지 알아야 합니다. DBMS 마다 페이징을 위한 방법이 다른데, 제공하는 정보가 다르기 때문입니다. 모든 DBMS 는 내가 원하는 정보의 총 갯수를 가져오는 기능을 제공합니다. 바로 select count(*) 을 이용하는 것입니다. 이것을 이용해서 게시판 아래 출력되는 페이지 번호를 생성할 수 있습니다. 그렇다면, 해당 페이지의 게시물만 가져오는 방법은 무엇일까요? 오라클은 전통적으로 ROWNUM 을 제공합니다. 출력되는 정보에 순차적인 번호를 부여함으로써 원하는 게시물만 가져오는 방식입니다. MS SQL Server 는 예전에는 TOP 을 이용했습니다. 출력될 정보 중 상위 몇 개를 가져온 뒤, 그 중 ..
2019/01/20 - [Programming/기타] - 시니어 프로그래머로 넘어가는 길 (2) 이번 글은 적을까 말까 고민하다가 결국 적기로 마음먹은, 일종의 후기나 외전 같은 성격의 글입니다. 실제 있었던 일을 저의 편향된 시선으로 적은 내용이므로 잘 가려서 보시길 바랍니다. 제가 겪은 회사의 사례를 통해 왜 고급개발자가 필요하며, 고급개발자가 어떠한 환경에서 일해야 하는지와 고급개발자로 어떠한 일을 해야 하는지, 그 필요성에 대해서 약간은 알려지게 되길 기대합니다. 제가 겪은 회사의 사례입니다. 회사는 여러 가지 서비스를 제공하고 있는 상태였고, 개발자도 수십 명을 보유한 곳이었습니다. 하지만, 내부적으로는 기술력이 높지 않다고 구성원들이 생각하고 있었고, 서비스의 질 보다는 내부 코드나 아키텍쳐에..
2019/01/19 - [Programming/기타] - 시니어 프로그래머로 넘어가는 길 (1) 저의 경우 아버지께서 한 회사에서 평생을 일하신 경우를 평생 보고 자라왔고 그 회사가 국내 굴지의 기업이어서 큰 혜택이 따른다는 것도 알고 있긴 했지만, 워낙 반골의 성향이 크다보니 대학교를 졸업할 시기에 이미 대기업은 갈 생각이 없었습니다. 취업을 고려하던 대학교 4학년...즉 처음 취업했던 2000년에 이미 대기업을 가지 않겠다고 마음 먹었고, 제가 다니고 있던 인하대학교 컴퓨터공학과의 대부분의 졸업자들이 대기업을 골라서 취업을 하던데 반해 저는 벤쳐기업을 선택해 취업을 했습니다. 대학생 때부터 이런 당돌한(?) 짓을 벌인 성격이다 보니 이후에도 많은 굴곡을 거쳐 지금까지 직장 생활을 하고 있습니다. 앞선..
요즘 프로그래머가 되기 위해서 취업 준비생들이 걷는 길은 보통 다음과 같습니다. 1. 대학에서 프로그래밍 관련 학과로 진학하거나 복수전공을 수강하여 학위를 취득한다. 2. 고졸, 비전공 혹은 전공이라도 국비 혹은 이름 높은 학원에서 단기 혹은 중장기 과정을 이수하여 이를 바탕으로 취업한다. 사실 이게 아닌 다른 경우가 있겠냐...라고 하겠지만, 일반적인 회사에서 신입을 채용할 때 신입 아닌 신입을 채용하려고만 하니 취업준비생들에게는 허들이 자꾸 높아지는 문제가 발생하고 있습니다. 하지만, 이 글에서 먼저 다뤄보려고 하는 것은 취업준비생이 아닌 취업 후 경쟁에서 살아남아 어느 정도 경력이 쌓인 시점, 즉 경력이 보통 3~5년 정도 된 개발자를 위한 글입니다. 사실 경력이 이보다 더 많더라도 한 번 생각해봐..
이번 프로젝트에서 jooq 을 이용해서 개발하면서 불편한 점이 몇 가지 있었습니다. 먼저, 객체(POJO)에 값을 넣고 돌아다니다가 DB 에 저장할 때 쿼리가 길어지는 문제였습니다. public long insert(ChatInfo chatInfo) { return this.dsl .insertInto(CHAT_INFO, CHAT_INFO.SESSION_ID, CHAT_INFO.IS_END, CHAT_INFO.DATE_ADD, CHAT_INFO.DATE_MOD) .values(chatInfo.getSessionId(), "N", Timestamp.valueOf(LocalDateTime.now()), Timestamp.valueOf(LocalDateTime.now())) .returning(CHAT_INF..
- Total
- Today
- Yesterday
- 내장 WAS
- Phabricator
- Nas
- Redmine
- 워드프레스
- docker
- jooq
- 프로젝트 규모
- 도입기
- 페이징
- RestTemplate
- 외장 WAS
- Spring MVC
- NoSQL
- Spring Boot
- couchbase
- paging
- java config
- boot
- SI
- Spring
- manjaro
- proxmox
- KDE
- OracleJDK
- messages.properties
- 엘지
- git
- 시니어 프로그래머
- 클라우드플레어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |