프로그램을 돌렸을 때 RuntimeError 가 발생하여 꺼지는 등, compile과 runtime 이 자주쓰이는 용어임에도 개념이 정리되어있지 않은 것 같아 이번에 정리해보려한다. Runtime 과 CompileTime Java 와 같은 고급 언어로 작성된 명령이나 소스 코드는 컴퓨터가 이해할 수 있도록 기계어로 변환되어야 한다. Compile Time 은 소스 코드가 컴파일러에 의해 기계어로 변환되는 시간으로 소스 코드는 .java에서 .class로의 바이트 코드로 변환된다. 이 시간 동안에 컴파일러가 코드의 구문 등을 확인한다. Runtime 은 프로그램이 실행되는 기간이며 일반적으로 컴파일 시간 이후에 발생한다. CompileTime Error Java를 기준으로 Java의 문법에 맞지 않게 작성..
jdk 17 의 기능 중 record 에 대한 내용이다. record 의 쓰임새 record 는 언제 쓰는 게 좋을까 ? record 는 데이터를 저장하기위한 클래스로 생성된 인스턴스의 값을 변경할 수 없다. 그렇기 때문에, 서로 다른 계층 간 불변 데이터를 전송할 때 유용하게 쓰일 수 있으며 기본 메서드를 자동으로 생성해주어 편리하게 사용할 수 있다. 또한, 공식문서에서 확인할 수 있듯이 equals(), hashCode(), toString() 를 제공한다. record 사용방법 1. DTO with record 사용자의 입력을 저장하여 데이터를 전달하는 MemberDTO 가 있다고 하자. MemberDTO 가 사용자의 이메일, 비밀번호, 이름 필드를 가진다고 했을 때 record 로 생성한 예가 아..
@SpringBootTest 말고 Mockito 를 사용하면 어떨까 ? Mockito 란? Mockito 는 테스트 목적으로 Mock 개체를 생성하도록 특별히 설계된 Mocking 프레임워크이다. Mocking은 단위 테스트 시 외부 종속성이 있는 경우 사용되는 프로세스로, 외부 종속성의 동작이나 상태가 아니라 테스트 중인 코드에 집중한다. 또한, 대상을 실제 개체가 아닌 Mock과 같은 모의(가짜) 개체로 대체한다. Mockito를 사용하면 Mock 개체의 기대치와 동작을 정의하여 테스트 중에 특정 시나리오를 시뮬레이션할 수 있게 된다. 이를 통해, Junit을 보완할 수 있다. 주요 장점은 아래와 같다. 1. No handwriting : 개발자들이 직접 Mock 코드를 구현할 필요가 없다. 2. A..
자바 8 이상부터 가능한 Stream 기능 중, reduce에 대한 내용이다. reduce() 동작 및 예제 1. .stream().reduce(identity value, accumulator function) public class reduceEx { public static void main(String[] args) { List numbers = List.of(1,2,3,4,5); int sum = numbers.stream() .reduce(0, reduceEx::sum); // ★ System.out.println(sum); } private static int sum(int a, int b) { return a + b; } } reduce() 는 stream의 요소를 하나의 결과값으로 반환한..