앞선 포스팅에서는 Optional의 개념과 문법을 살펴보았습니다. Optional은 Null이 될 수 있는 객체를 감싸는 Wrapper 클래스이기 때문에 비용이 발생합니다. 그래서 Optional은 필요한 경우에만 사용하는 것이 합리적인데, 언제 사용하면 좋을지 살펴보도록 하겠습니다. 1. 언제 Optional을 사용해야 하는가? [ Optional이 만들어진 이유와 의도 ] Java8부터 Null이나 Null이 아닌 값을 저장하는 컨테이너 클래스인 Optional이 추가되었다. Java 언어의 아키텍트(설계자)인 Brian Goetz는 Optional에 대해 다음과 같이 정의하였다. Optional is intended to provide a limited mechanism for library met..
이번에는 테스트를 위한 테스트 컨텍스트 프레임워크(Test Context Framework)에 대해 정리해보도록 하겠습니다. 아래의 내용은 토비의 스프링을 참고하여 정리한 내용입니다. 1. 스프링 테스트 컨텍스트(Spring Test Context) [ 테스트 컨텍스트(Test Context) ] 스프링은 테스트에 사용되는 애플리케이션 컨텍스트를 생성하고 관리하여 테스트에 적용해주는 테스트 프레임워크를 제공하는데, 이를 테스트 컨텍스트 프레임워크(Test Context Framework)라고 부른다. 테스트 컨텍스트 프레임워크는 실제 서버와 거의 동일한 구성으로 동작하는 애플리케이션 컨텍스트를 손쉽게 만들 수 있도록 도와준다. 여기서의 컨텍스트는 테스트에서 사용되는 애플리케이션 컨텍스트를 생성하고 관리해..
객체지향 프로그래밍에서 코드를 재사용하기 위한 방법으로 크게 상속과 합성이 있습니다. 대부분의 경우 상속보다 합성을 이용하는 것이 좋은데, 이번에는 왜 합성을 사용해야 하는지에 대해 알아보도록 하겠습니다. 아래의 내용은 클린코드, 이펙티브 자바, 오브젝트 등을 참고하여 작성하였습니다. 1. 상속(Inheritance)과 합성(Composition) 개발을 할 때 가장 신경써야 하는 것 중 하나가 중복을 제거하여 변경을 쉽게 만드는 것이다. 객체지향 프로그래밍의 장점 중 하나는 코드를 재사용하여 중복을 제거하기에 용이하다는 것인데, 이를 위한 방법에는 크게 상속과 합성 두 가지가 있다. [ 상속(Inheritance) 이란? ] 상속은 상위 클래스에 중복 로직을 구현해두고 이를 물려받아 코드를 재사용하는 ..
우리가 알고있는 스프링의 애플리케이션 컨텍스트에는 다양한 구현체들이 존재하는데, 이번에는 어떠한 구현체들이 있는지 살펴보도록 하겠습니다. 아래의 내용은 토비의 스프링을 참고하여 정리한 내용입니다. 1. 빈 설정 메타정보(BeanDefinition)와 다양한 종류의 Spring Application Context(스프링 애플리케이션 컨텍스트) [ 빈 설정 메타정보(BeanDefinition) ] Spring과 관련된 설정을 하기 위한 방법으로는 XML과 Java로 하는 2가지 방법이 있고, 두 가지 방식을 혼용하여 사용하는 것 역시 가능하다. 그러한 이유는 Spring이 설정 메타정보를 BeanDefinition 인터페이스를 통해 관리하기 때문이다. Spring Application Context(스프링 ..
이번에는 Docker-Compose로 ELK(Elastic, Logstash, Kibana) 스택을 기반으로 하는 모니터링 서버를 구축하는 방법에 대해 정리해보도록 하겠습니다. 아래의 예제에서는 Docker와 Docker Compose가 사전에 설치되어있다고 가정하고 진행하도록 하겠습니다. 만약 Docker와 Docker Compose가 설치되어 있지 않다면 이 글을 참고해주세요. 1. Docker Compose로 ELK 구축 [ ELK 구축 ] 1. Docker Compose 설정 Clone 위의 버전은 기존의 Docker-Compose에서 X-Pack 라이센스를 basic으로 변경해두었다. 추가로 username, password 변경이 필요하다면 진행하도록 하자. git clone https://g..