Spring 에서 제공하는 RestTemplate 을 이용하면 다른 URL 을 호출하고 결과를 받아오는 코드를 쉽게 작성할 수 있습니다. 기존에는 Apache Commons 의 http 을 많이 이용했으나, Spring 에서 제공하는 RestTemplate 의 사용빈도가 점점 늘어나고 있습니다. 그런데, RestTemplate 을 기본 설정대로 사용하는 경우도 있지만, 추가적인 설정이 필요한 경우가 있습니다. 크게 두 가지라고 생각되는데, 하나는 HttpClient 설정을 별도로 하기 위한 것이고, 다른 하나는 로깅 때문입니다. 어떻게 이 두 가지를 적용하는지 알아보겠습니다. 먼저 설정을 하기 위해 @Configuration 애노테이션을 이용해 Class 을 하나 만듭니다. 그리고 그 안에 RestTem..
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 ..
1. MyBatis 로 질의하기 Spring Boot 에서 JdbcTemplate 으로 질의를 쉽게 할 수 있는건 사실이지만, 그래도 전통적으로 이용되어온 MyBatis 는 현재까지도 그 사용범위가 매우 넓고 익숙해지는데 큰 비용이 지출되지 않고 사용자 층 역시 매우 두터워서 프로젝트 시작 전에 따로 교육을 하지 않아도 되는 경우가 많습니다. 그래서 Spring Boot 에서는 최근까지도 MyBatis 에 대한 지원을 포함하지 않고 있다가 최근에 SPRING INITIALIZR 의 SQL 영역에 MyBatis 을 추가하였습니다. 예전에는 iBatis 와 Spring 에서 Spring Framework 통합 라이브러리를 만들었지만, 현재는 MyBatis 에서 제공하는 라이브러리를 이용해야만 Spring F..
Spring Boot 에서는 대표적인 DBMS(DataBase Management System)에 표준적으로 접속 정보를 설정하고 JDBC, Connection Pool 등을 자동으로 구성해서 사용자가 쉽게 질의(query)를 할 수 있는 기능을 제공합니다. 1. 프로젝트 생성 아래와 같이 프로젝트 생성 시 JDBC 와 DBMS 에 맞는 Driver 만 선택해주면 의존성 추가를 해줍니다. 실제 이미지와 같이 선택하면 아래 코드와 같이 pom.xml 파일에 두 개의 의존성만이 추가될 뿐입니다. 하지만, 이 두 개의 의존성 추가만으로 DB 접속을 할 수 있는 환경을 쉽게 구축할 수 있습니다. org.springframework.boot spring-boot-starter-jdbc mysql mysql-con..
Spring Boot 레퍼런스 가이드(Spring Boot Reference Guide)에서 템플릿(Template)에 관한 내용을 보면 매우 간단한 가이드를 볼 수 있습니다. https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-web-applications.html#boot-features-spring-mvc-template-engines 위 링크에서 확인할 수 있듯이 몇 가지 템플릿 엔진을 사용할 수 있도록 제공되고 있으며, 전통적인 방식의 JSP 는 제약이 있으므로 사용을 피하라는 안내가 있습니다. 여기서는 의존성으로 Web 와 Lombok 이 선택된 Spring Boot 프로젝트를 이용하여 T..
Spring Boot 프로젝트를 처음 생성하면 반드시 생기는 파일이 몇 개 존재하는데, 그 중 src/main/resources/ 디렉토리에 존재하는 application.properties 파일이 있습니다. Java 의 오래된 키-값(Key-Value) 형태의 값 저장 형태인데, 처음 프로젝트를 생성하면 아무런 내용이 없습니다. Spring Boot 의 공식 문서 중 가장 자주 보게 되는 문서가 이 application.properties 관련 부록입니다. https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html 이 파일은 Spring Boot 에서 제공하는 많은 기능의 간편한 설정을 ..
Spring Boot 프로젝트를 이용해 Hello World 을 출력하는 프로그램을 만들어 보겠습니다. 1. Console 출력SPRING INITIALIZR 에서 기본 프로젝트를 생성한 뒤 Hello World 을 출력하는 간단한 코드를 작성해보겠습니다. 아래와 같이 기본값으로 생성한 프로젝트를 준비합니다. src/main/java/com/example/demo/ 디렉토리의 DemoApplication.java 파일이 main() 이 있는 클래스입니다.package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplicati..
Spring Boot 을 개발할 때 Eclipse, Netbeans 와 같은 IDE 뿐만 아니라 Visual Studio Code, Atom 등의 에디터를 이용해서 개발하는 사람들도 많지만, 여기서는 Ultimate Edition 와 Community Edition 을 제공하는 IntelliJ IDEA 을 이용해 프로젝트 개발 환경을 구성해보도록 하겠습니다. 1. SPRING INITIALIZR 에서 생성한 프로젝트로 시작하기일반적으로 IDE 에서 프로젝트를 구성하는 기능을 제공하고, Eclipse 나 IntelliJ IDEA 같은 IDE 들도 모두 SPRING INITIALIZR 웹사이트와 같이 프로젝트를 생성하는 기능을 제공합니다. 하지만 이전 글에서 SPRING INITIALIZR 에서 프로젝트를 ..
- Total
- Today
- Yesterday
- Spring
- Spring Boot
- 외장 WAS
- jooq
- KDE
- Phabricator
- 시니어 프로그래머
- paging
- couchbase
- OracleJDK
- NoSQL
- boot
- 내장 WAS
- 페이징
- 엘지
- messages.properties
- proxmox
- git
- RestTemplate
- 클라우드플레어
- 프로젝트 규모
- Spring MVC
- manjaro
- java config
- 워드프레스
- Nas
- docker
- SI
- 도입기
- Redmine
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |