본문 바로가기

전체 글93

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.
빠르게 실패 vs 안전하게 실패 예외의 종류와 처리 방법 예외(Exception) java.lang.Exception 클래스의 서브 클래스들은 Error와 달리 애플리케이션 코드에서 예외가 발생하였을 경우에 사용 체크예외와 언체크예외로 구분 체크 예외(Check Exception) RuntimeException 클래스를 상속하지 않은 Exception 클래스들 체크 예외는 예외가 발생할 수 있는 메소드를 사용할 경우 반드시 예외를 처리하는 코드를 함께 작성해야 함. try-catch 문으로 잡거나 throws를 통해 예외를 던져야 함. 만약 예외를 처리하지 않으면 컴파일 에러가 발생 언체크 예외(Uncheck Exception) RuntimeException 클래스를 상속한 Exception 클래스들은 예외처리를 강제하지 않기 때문에 .. 2021. 9. 23.
컨테이너 기술의 이해 가상화 가상화 : 하드웨어에 종속된 컴퓨터 리소스를 추상화한 것 운영체제에서 제공하사는 가상화 process, cpu 스케줄링, virtual memory, paging, swapping 등 서버 가상화 hw 기술이 발전하면서, 서버의 성능이 획기적으로 향상됨 서버가상화의 장점 1.높은 자원 활용률 ex. 용도가 다른 3개의 물리서버가 있을 때 각 30% 용량만 사용한다고 가정하면, 서버 자원을 효율적으로 사용하고 있지 않음 남은 서버들을 활용하여 1개에 60% 사용하고 남은 1개의 30%, 남은 1개는 사용 중지 시켜 냉각 및 유지관리 비용을 절감 시킬 수 있음 2.장애 고립 특정 앱이나 os의 장애가 전체 시스템으로 전파되어 다른 업무에 영향을 미치는 것을 방지할 수 있음 3.보안 강화 개별 사용자가.. 2021. 9. 7.