일지
close
프로필 사진

일지

github: @river20s

  • 분류 전체보기 (8)
    • @river20s (1)
    • 프로젝트 (0)
      • Moya List (0)
    • 개발 일지 (0)
    • TIL (0)
    • Spring (1)
    • Java (5)
  • 홈
  • 태그
  • 방명록

깔끔한 Service 코드 만들기(from, map, collect)

스프링 부트로 비즈니스 로직을 구현할 때 엔티티를 DTO*로 변환하거나 리스트 데이터를 가공해야 하는 경우가 많다. 이때 자주 쓰게 되지만 헷갈리는 것이 from(), map(), collect()인데, 이 셋의 스펙과 활용법을 정리해보려 한다.from() - 객체 간의 전환보통 DTO 클래스 내부에 정적 메서드**로 구현하며, 어떤 객체로부터 이 DTO가 만들어지는가를 명확히 선언한다.Entity → DTO생성자 대신 from을 쓰는 이유****읽기 훨씬 자연스러워서 의도가 명확하다. (예: new QuestionResponseDto(...)보다 QuestionResponseDto.from(question)이 읽기 자연스러움)서비스 로직에서 일일이 Getter를 호출해 값을 세팅할 필요가 없다. 변환 ..

  • format_list_bulleted Java
  • · 2026. 1. 26.

from()

자바 표준 Stream 인터페이스에는 from()이라는 인스턴스 메서드가 없다. 대신 자바의 여러 클래스에서 정적 팩토리 메서드 관례로 사용된다.사례날짜, 시간 관련LocalDateTime.from(temporal)처럼 다른 시간 객체를 기반으로 새로운 객체를 만들 때EnumSetEnumSet.from(Collection c)Project Reactor다른 발행자를 리액티브 타입으로 변환할 때DTO 변환스프링 개발 시 Entity를 DTO로 변환할 때Java 9 이상에서 컬렉션을 만들 때 사용하는 List.of()등과 유사한 성격의 객체 생성자 역할을 한다.

  • format_list_bulleted Java
  • · 2026. 1. 26.

collect()

데이터의 취합collect()는 스트림의 요소들을 모아서 리스트, 셋, 맵과 같은 컬렉션이나 다른 형태의 결과물로 만드는 최종 연산이다. R collect(Collector collector);가변 축소(Mutable Reduction): 스트림의 요소들을 하나의 누적기(Container, 예: ArrayList)에 담아 최종 결과를 산출한다.주로 Collectors 클래스에서 제공하는 정적 메서드(toList(), toSet(), joining() 등)와 함께 사용한다.병렬 스트림 환경에서도 안전하게 데이터를 합칠 수 있도록 설계되어 있다.

  • format_list_bulleted Java
  • · 2026. 1. 26.

map()

데이터의 변환map()은 주로 Stream이나 Optional 인터페이스에서 사용된다. 스트림 내부의 요소를 차례대로 다른 형태로 변환하는 역할을 한다. Stream map(Function mapper);입력타입 T를 받아서 결과타입 R을 반환하는 Function 인터페이스를 인자로 받는다.요소의 개수는 유지하되, 그 내용물(타입이나 값)이 바뀐다.지연 연산, 중간 연산이므로 collect() 같은 최종 연산이 호출되기 전까지는 실제로 실행되지 않는다.Map (Java Platform SE 8 ) Map (Java Platform SE 8 )If the specified key is not already associated with a value (or is mapped to null), attempts..

  • format_list_bulleted Java
  • · 2026. 1. 26.

Java의 < > 기호 - 제네릭(Generics)

기호의 의미제네릭은 클래스 내부에서 사용할 데이터 타입을 외부에서 결정하는 것이다.왜 필요한가?제네릭을 사용하면 컴파일러에게 클래스에 들어갈 데이터 타입을 미리 알려줄 수 있다.List list = new ArrayList();List list = new ArrayList();제네릭을 사용하지 않은 위의 경우 꺼낼 때 형변환이 필요하다.그 아래의 제네릭을 사용한 경우 문자열만 넣을 수 있으므로 꺼낼 때 안전하다.오늘 마주친 제네릭들1. ResponseEntityHTTP 응답을 보낼 때 응답 본문에 어쩌고Dto라는 객체를 담아서 보내겠다는 뜻.데이터를 받는 쪽에서 '이 응답을 뜯어보면 어쩌고Dto가 들어있겠구나'하고 확신할 수 있음.2. Response응답은 보내지만 본문에 담을 데이터는 없다는 뜻.보통 ..

  • format_list_bulleted Java
  • · 2026. 1. 26.

엔드 포인트(Endpoint)

엔드포인트란엔드포인트는 외부(클라이언트)에서 소프트웨어 서비스나 API에 접근할 수 있도록 공개된 통신의 종단점-끝점을 의미한다.Spring에서의 엔드포인트Spring MVC나 Spring Boot에서 만드는 Controller 안의 메서드 하나하나가 엔드포인트이다.URL 경로(Path): 어디로 갈 것인가 (예: /api/users)HTTP 메서드(Method): 어떤 행위를 할 것인가 (예: GET, POST)예시다음은 TagController.java 코드의 일부이다. 이 코드는 태그라는 리소스를 관리하기 위해 여러 엔드포인트를 갖고 있다.package com.moyalist.backend.controller;import com.moyalist.backend.dto.QuestionResponseDt..

  • format_list_bulleted Spring
  • · 2026. 1. 26.
  • navigate_before
  • 1
  • 2
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (8)
    • @river20s (1)
    • 프로젝트 (0)
      • Moya List (0)
    • 개발 일지 (0)
    • TIL (0)
    • Spring (1)
    • Java (5)
인기 글
전체 방문자
오늘
어제
Copyright © ubukki(@river20s) 모든 권리 보유.
SKIN: Copyright © 쭈미로운 생활 All rights reserved. Designed by JJuum.
and Current skin "dev-roo" is modified by Jin.

티스토리툴바