Spring Batch에서 Chunk 작업이 길어지는 경우 주의할 점
들어가며 Spring Batch 실행 중 아래와 같은 에러 메세지를 확인 하는 경우 이 글에서 설명하는 case일 수 있습니다. Caused by: java.io.EOFException: unexpected end of stream, read 0 bytes from ...
Read more
Objects Study - Chapter12. 다형성
상속의 오해와 진실 코드 재사용을 목적으로 상속을 사용하면 변경하기 어렵고 유연하지 못한 설계에 이를 확률이 높아진다. 상속의 목적은 코드 재사용이 아니다. 상속은 타입 계층을 구조화하기 위해 사용해야 한다. 타입 계층은 객체지향 프로그래밍의 중요한 특성 중의 하나인 ...
Read more
Objects Study - Chapter11. 합성과 유연한 설계
상속과 합성 상속과 합성은 객체지향 프로그래밍에서 가장 널리 사용되는 코드 재사용 기법이다. 상속 부모 클래스와 자식 클래스를 연결해서 부모 클래스의 코드를 재사용한다 컴파일 타임 의존성을 가진다 (정적인 관계) is-a 관계 부모 클래스의 내부 구현에 대해 상세히 ...
Read more
Objects Study - Chapter10. 유연한 설계
상속 객체지향 프로그래밍의 장점 중 하나는 코드를 재사용하기가 용이하다는 점이다. 전통적인 패러다임에서는 코드를 복사 후 붙여넣기 하고 수정하여 코드를 재사용하였다. 객체지향에서는 코드를 재사용하기 위해 새로운 코드를 추가한다. 재사용 관점에서 상속이란 클래스 안에 정 ...
Read more
Objects Study - Chapter9. 유연한 설계
개방-폐쇄 원칙 개방폐쇄의 원칙(OCP, Open-Closed Principle)은 다음과 같이 설명된다. 소프트웨어 개채(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다. 여기서의 키워드는 확장과 수정이다. 확장에 ...
Read more
Objects Study - Chapter8. 의존성 관리하기
서론 잘 설계된 객체지향 어플리케이션은 작고 응집도 높은 객체들로 구성된다. 작고 응집성 높은 객체란 책임의 초점이 명확하고 한 가지 일만 잘하는 객체를 의미한다. 따라서 객체 간 협력을 통해 다른 객체에게 도움을 요청하여 여러가지 일을 수행할 수 있다. 협력은 객체가 ...
Read more
Objects Study - Chapter7. 객체 분해
추상화와 분해 불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만을 남기는 작업을 추상화 라고 부른다. 가장 일반적인 추상화 방법은 한 번에 다뤄야 하는 문제의 크기를 줄이는 것이다. 이처럼 큰 문제를 해결 가능한 작은 문제로 나누는 작업을 분해(decompos ...
Read more
Objects Study - Chapter6. 메세지와 인터페이스
협력과 메세지 협력은 어떤 객체가 다른 객체에게 무언가를 요청할 때 시작된다. 메세지는 객체 사이의 협력을 가능하게 하는 매개체다 객체가 다른 객체에게 접근할 수 있는 유일한 방법은 메세지를 전송하는 것뿐이다. 메세지는 매개로 하는 요청과 응답의 조합이 두 객체 사이 ...
Read more
Objects Study - Chapter5. 책임 할당하기
책임 주도 설계를 향해 책임에 초점을 맞춰서 설계할 때 직면하는 가장 큰 어려움은 어떤 객체에게 어떤 책임을 할당할지를 결정하기가 쉽지 않다는 것이다. 책임 할당 과정은 일종의 트레이드오프 활동이다. 동일한 문제를 해결할 수 있는 다양한 책임 할당 방법이 존재하며, 어 ...
Read more
Objects Study - Chapter4. 설계 품질과 트레이드오프
데이터 중심의 설계 객체지향 설계에는 두 가지 방법을 이용해 시스템을 객체로 분할할 수 있다. 데이터를 분할의 중심축으로 삼는 방법 (Entity를 먼저 정의하고 비지니스 로직 구현) 데이터 중심의 관점에서는 객체는 자신이 포함하고 있는 데이터를 조작하는 데 필요한 ...
Read more