1. 리플렉션(Reflection)자바의 리플렉션은 런타임 시점에 클래스의 내부 구조(클래스, 메서드, 필드, 생성자 등)에 접근하고 조작할 수 있게 해주는 기능입니다. ExampleData exampleData = new ExampleData();// 일반적인 방법으로 메소드 호출exampleData.hello();// ReflectionClass dataClass = exampleData.getClass(); String methodName = "hello"; // 이부분에서 동적으로 수정가능Method helloMethod = dataClass.getDeclaredMethod(methodName);helloMethod.invoke(exampleData);위 코드는 자바 리플렉션을 사용하..
1. 로그(Log)로그(Log)는 프로그램이나 시스템이 실행되는 동안 발생하는 다양한 이벤트, 오류, 상태 정보를 기록하는 데이터입니다. 이를 통해 문제 해결, 성능 분석, 보안 감시 등에 활용할 수 있습니다. 하지만 로그를 사소한 것까지 모두 기록하면 어플리케이션 성능에 영향을 미치게 됩니다. 따라서 로그 메시지의 중요도와 우선순위에 따라 로그 레벨을 나누고 체계적으로 관리하는 것이 필요합니다. 1.1. 로그 레벨(Log Level) 이해하기 일반적으로 알려진 로그 레벨은 DEBUG, INFO, WARN, ERROR, FATAL 순으로, 순서대로 갈수록 로그 레벨이 높아집니다. 레벨이 높다는 의미는 시스템에 영향을 미치는 흔치 않은 문제나 비정상적인 상황을 나타내며, 중요한 조치가 필요한 상태를 ..
1. 일급 컬렉션(First-Class Collection) 일급 컬렉션이란 컬렉션(collection)을 하나의 객체로 감싸서 관리하는 클래스입니다.public class Cars { private final List cars; public Cars(List cars) { this.cars = cars } public List getCars() { return Collections.unmodifiableList(cars); } public 기타 커스텀 메서드(){} ... }위와 같이 Car객체를 담은 ArrayList 컬렉션을 한번 더 클래스로 감싸서 관리하는 것을 일급 컬렉션이라고 합니다. 일급 컬렉션의 정의를 정리하면 다음과 같..
1. Enum 1.1. Enum의 정의 Enum은 "열거형 타입"을 의미하며, Java에서 서로 연관된 상수들의 집합을 정의하기 위해 사용됩니다. Enum은 특정 값들만 가질 수 있도록 제한된 데이터 타입을 제공하여 코드를 간결하게 만듭니다.타입 안정성 제공: Enum은 컴파일 타임에 값이 결정되며, 허용되지 않은 값이 할당되는 것을 방지합니다.상수 그룹화: 관련 있는 상수들을 하나의 타입으로 묶어 표현합니다.객체 지향적 설계: 필드와 메서드를 추가하여 응집도를 높이고, 상수와 관련된 데이터 및 동작을 한곳에 모아 표현할 수 있습니다.- 간단한 예시public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;}pub..
1. JUnit / JUnit5 JUnit은 자바에서 널리 쓰이는 단위 테스트 프레임워크로, 단위 테스트를 쉽게 작성하고 관리할 수 있게 해줍니다. JUnit 3.x에서 JUnit의 기초적인 구조가 완성되고, 이후 JUnit5까지 발전하였습니다. JUnit 5는 JUnit의 최신 버전으로, JUnit Platform, JUnit Jupiter, JUnit Vintage로 구성된 모듈형 아키텍처로 설계되었습니다.JUnit Platform: JUnit 5의 핵심 플랫폼으로, 테스트를 실행하고 결과를 리포팅하는 역할을 합니다.JUnit Jupiter: JUnit 5에서 새로 추가된 테스트 프로그래밍 모델로, 새로운 어노테이션과 확장성을 제공합니다.JUnit Vintage: JUnit 3.x와 4.x 버전의..
객체지향 설계의 원칙인 SOLID는 단순한 개념 같으면서도 처음 접하면 다소 어렵게 느껴집니다. 특히, 객체지향 설계를 도와주는 프레임워크인 스프링을 배우면서 "왜 굳이 이렇게 해야 할까?"라는 의문이 들기도 합니다. 하지만 여러 번의 개발 경험과 학습을 통해 그 원리와 필요성을 점차 이해하게 되고, 이를 적용했을 때 얻을 수 있는 이점을 자연스럽게 체감하게 되는 것 같습니다. "SOLID 원칙"은 객체지향 프로그래밍의 가이드라인이라고 할 수 있습니다. SOLID는 코드의 유지보수성, 확장성, 가독성을 모두 높이는 데 중점을 두고 있습니다. 하지만 이 원칙은 절대적인 것이 아닙니다. 따라서 복잡한 비즈니스 로직이나 스파게티 코드가 아닌 이상, 이 원칙에 지나치게 집착할 필요는 없다고 생각합니다. 1. ..