본문 바로가기

Development/Spring14

Spring Boot 로그 설정 (Logback) Logging이 필요한 이유 운영중인 앱에서 문제가 발생했을 때 문제의 원인을 파악하기 위해선 정보가 필요. 이를 위해 Exception이 발생했거나 중요 기능이 실행되는 부분에 적절한 로그를 남겨 이후에 확인 가능하도록 해야 함 이런 로그를 생성해주는게 Logging Logging 이란? 정보를 제공하는 일련의 기록인 로그(Log)를 생성하도록 시스템을 작성하는 활동 로그를 출력할 때 System.out.println()를 이용하면 가장 쉽게 출력할 수 있긴 하지만, 양이나 수준(Level)을 조절할 수 없고, 파일에 저장하기 불편한 단점이 존재. 성능면에서도 좋지 않음. 자주 사용 시 앱의 속도가 느려짐! 그래서 실제 로깅 시 따로 라이브러리를 이용하는데 다양함! Logback 이란? Java에서 L.. 2021. 9. 23.
java.util.Optional T 클래스 Optional 객체의 생성 of() 메소드나 ofNullable() 메소드를 사용하여 Optional 객체를 생성 of() : null이 아닌 명시된 값을 가지는 Optional 객체를 반환 null이 저장될 경우, NullPointException 발생 ofNullable() : 명시된 값이 null이 아니면 명시된 값을 가지는 Optional 객체를 반환하며, 명시된 값이 null이면 비어있는 Optional 객체를 반환 null 값이 발생된 가능성이 있을 경우 사용 Optional opt = Optional.ofNullable("자바 Optional 객체"); System.out.println(opt.get()); empty() : Optional 객체를 null로 초기화 Optional 객체에 .. 2021. 9. 23.
Java Optional 바르게 쓰기 isPresent()-get() 대신 orElse()/orElseGet()/orElseThrow() orElse(new ...) 대신 orElseGet(() -> new ...) 단지 값을 얻을 목적이라면 Optional 대신 null 비교 Optional 대신 비어있는 컬렉션 반환 Optional을 필드로 사용 금지 Optional을 생성자나 메서드 인자로 사용 금지 Optional을 컬렉션의 원소로 사용 금지 of(), ofNullable() 혼동 주의 int, long, double에 대해선OptionalInt, OptionalLong, OptionalDouble 사용하기 Optional가 만들어진 의도! Brian Goetz라는 사람이 제작함 제작한 의도에 따른 주의사항 26가지는 공식 API 문.. 2021. 9. 23.
Unit Test에서 AssertThat을 사용 JUnit 4.4 부터는 asswerThat 메서드가 추가됨 asswerThat 이 좋은 점 1. 가독성 두 값을 비교할 때 주로 assertEquals를 사용할 수 있음. 그러나 asswerThat을 이용하면 인자의 위치를 명확하게 알 수 있음 // 두 객체가 같은 값인지 assertEquals(expected, actual); assertThat(actual, is(expected)); // 두 객체가 다른 값인지 assertFalse(expected.equals(actual)); asserThat(actual, is(not(expected))); 2. 더 나은 Failure 메시지 ex. assertTrue(expected.contains(actual)); --- 실행 결과 --- java.lang.. 2021. 9. 23.
테스트 코드 작성 시 유의사항 추가 예정 단위테스트 vs 통합테스트 단위테스트(Unit Test) 개발 단계에서 각 모듈이 개발완료된 시점에서 수행되는 테스트 @ExtendWith(MockitoExtension.class)를 통해 테스트 진행 개발된 각 모듈을 테스트. 즉, 하나의 기능(모듈)이 잘 동작하는지를 확인하는 과정 (==모듈 테스트) 모듈이 개발 완료되는 시점에서 개발자가 명세서 기반으로 정확히 개발했는지 테스트 진행 통합테스트(Integration Test) 모듈을 통합하는 과정에서 모듈 간 호환성의 문제를 찾아내기 위해 수행되는 테스트 @SpringBootTest를 통해 테스트 진행 모듈 간의 연결 작업이 올바르게 연계되어 작동하는지를 테스트하는 과정 빅뱅 통합 : 전체 모듈을 모두 통합한 후 통합 테스트를 수행. 오류.. 2021. 9. 23.
@Validation 어노테이션 @Validation 어노테이션을 사용하면 좋은 점 Java에서는 2009년부터 Bean Validation이라는 데이터 유효성 검사 프레임워크를 제공 Bean Validation은 애플리케이션 전체에 유효성 검사 로직이 분산되어 있는 문제 코드 중복이 심한 문제 비즈니스 로직이 섞여 검사 로직 추적이 어렵고 앱이 복잡해지는 문제 수정하기 어렵고, 오류 발생 가능성이 큰 문제 를 해결하기 위해 도메인 모델(Domain Model)에 어노테이션(Annotation)을 정의할 수 있도록 해주는 것 build.gradle에 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-validation' 제약 설정과 검사 각 제약조건은.. 2021. 9. 23.