java

· Dev/Spring
개요Dktechin 주관 기업실무 프로젝트를 진행하면서 Argument Resolver를 이용해서 컨트롤러에서 조건을 어노테이션으로 받아 조금 더 가독성있고 간단하게 사용하는 방법을 알게되어서 정리해보려고 한다.이 방법을 통해서 검색 조건 파라미터들을 @SearchParam이라는 어노테이션으로 받아서 MemberSearchParam, BoardSearchParam 등 여러 Record 객체로 만들어서 사용했다.HTTP 메시지 컨버터컨트롤러에서 변수 바인딩 처리 방법특정 변수에 바인딩@RequestParam 사용가변 경로 변수 바인딩@PathVariableHttp Body 변수 바인딩@RequestBody(주로 DTO 사용)파일과 같은 Multipart@RequestPart이 때 Argument Resol..
· Dev/JAVA
개요 엔티티 객체를 Dto로 변환하는 과정에서 For문을 사용하는 것 보다 Stream을 이용하는 방법으로 구현하고 있는데 둘의 성능 차이가 궁금해져서 한 번 해보려고 한다. Stream 특징 데이터를 읽기만 한다. 병렬 처리가 쉽다. 가독성이 좋다. 상황에 따라 다르겠지만.. 데이터 셋이 클수록 병렬 스트림을 이용하여 For문에 비해 성능이 좋아진다. Stream VS For 성능 비교 ArrayList 자체가 원시 데이터에 비해서 워낙 순회하는데 비용이 커서 속도 차이는 별로 안난다고 한다. 백문이 불여일견(타) 한번 테스팅 해봤다. 내가 제일 자주 사용했던 엔티티 리스트를 Dto로 리스트로 변환하는 stream.map(lambda).toList()를 사용했다. 테스팅 코트 @Test void For..
· Dev/JAVA
처음 처음에 Enum 타입에 대해서 부정적으로 바라봤다. Enum 클래스를 새로 생성하는 것도 별로라고 생각했고 성능적으로 크게 높아지는지 확신도 없었기 때문이다. 근데 역시 그냥 생기는 기술은 없는 것 같다. Enum 타입을 무시하고 사용하지 않은 대가를 톡톡히 치뤘다. ㅠㅠㅠㅠ Enum 타입을 사용하지 않는다면? 프로젝트를 진행할 때 각종 데이터 타입을 모두 String으로 설정했었다. 처음에는 아무 문제도 없었다. 사실 조심만 하면 사용하는데 크게 문제는 없었다. 단순히 MessageType이나 NoticeType과 같은 형식이 정해진 값들도 오타만 내지 않는다면 테스트 코드나 DB에 넣을 때도 크게 어려움은 없었다. 실제로 사용한 noticeType private String noticeType;..