개요 Spring Boot 기반의 웹 애플리케이션은 기본적으로 각 요청에 대해 동기 방식으로 로직을 실행한다. 하지만, 필요에 따라 비동기 방식으로 로직을 실행해야 하는 경우도 있다. 예를 들면 I/O 부하가 많이 발생하는 배치 작업을 싱글 쓰레드로 처리하면 CPU와 메모리는 남아도는데, 병목이 생겨 느려지기 쉽상이다. 이런 경우 적절히 n개의 멀티 쓰레드로 쪼개어 배치 작업을 실행하면 처리 시간을 경우에 따라 드라마틱하게 단축할 수 있다. 이번 글에서는 이러한 사례를 해결하기 위한 비동기 방식의 실행 방법에 대해서 설명하고자 한다. RejectedExecutionHandler 구현체 작성 ThreadTaskExecutor에 의해 관리되는 쓰레드 풀의 가용 쓰레드가 한계치에 도달할 경우, TaskReje..
개요 웹의 시대가 열린지는 오래되었지만 REST API가 본격적으로 유행한지는 얼마 되지 않았다. 안타깝게도 국내는 비즈니스 로직 구현에만 초점을 맞추어 GET, POST 메써드의 구분 없이 API 요청을 허용한다거나(심지어 POST 요청에 쿼리 스트링을 담기도 한다.) 상태 코드를 사용하지 않고 무조건 200 응답 후 바디에 독자적인 코드를 재정의하는 등 HTTP 스펙의 권고사항을 무시한 API 개발이 너무나도 흔한 상황이다. 그럼에도 REST는 가독성, 유지보수성 등을 고려했을 때 꼭 필요한 설계 철학이다.(세계 최대의 커뮤니티 reddit 또한 REST API를 제공한다.) 이번 글에서는 이러한 REST API를 이용(소비)하는 클라이언트로서 RestTemplate의 사용 예를 설명하고자 한다. 라..
먼저 읽어볼만한 글 IntelliJ IDEA에서 Spring Boot 웹 프로젝트 생성하기 Spring Boot 프로젝트에서 Profile 적용하기 라이브러리 종속성 추가 /build.gradle 파일에 아래 내용을 추가한다. dependencies { testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test' testCompile group: 'org.assertj', name: 'assertj-core', version: '3.12.2 } spring-boot-starter-test Starter POM의 추가 만으로 Spring Test, JUnit, Hamcrest, Mockito를 모두 사용하여 테스트 클래스를 ..
Spring 프레임워크에 있어서 ApplicationContext 오브젝트는 Bean의 초기화와 Life Cycle을 관리하는 중요한 오브젝트이다. Spring MVC 기반의 웹 애플리케이션을 개발하다보면 ApplicationContext에 직접 접근할 일이 거의 없지만 Bean 오브젝트를 얻기 위해 필요할 때가 있다. ApllicationContext 오브젝트를 획득하는 방법은? 방법은 간단하다. Controller 클래스를 예로 들면 BeanFactoryAware 인터페이스를 구현하고 아래와 같이 setBeanFactory() 메써드를 오버라이드하여 작성한다. 현재 활성화된 특정 Bean 오브젝트를 획득할 수 있다. @Controller public class SomeController impleme..
- Total
- Today
- Yesterday
- Tomcat
- bootstrap
- 평속
- Docker
- chrome
- 태그를 입력해 주세요.
- jsp
- 로드 바이크
- CentOS
- MySQL
- Spring MVC 3
- JavaScript
- node.js
- jpa
- jstl
- graylog
- maven
- 알뜰폰
- Eclipse
- 구동계
- Kendo UI
- java
- spring
- Kendo UI Web Grid
- 자전거
- Spring Boot
- kotlin
- 로드바이크
- JHipster
- DynamoDB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |