아래 코드는 postsRepository 결과로 넘어온 Posts의 Stream을 map을 통해 PostsListResponseDto로 변환 후 , List로 반환하는 메소드입니다. 코드를 좀 더 자세히 분석해보겠습니다.
Java는 Stream API를 활용하여 리스트의 항목을 변환하고, 새로운 리스트로 만드는 작업을 수행합니다. 기존 반복문을 사용하는 방법에 비해 더 간결하게 코드 작성이 가능해집니다. 또 데이터의 변환, 필터링, 정렬 등 다양한 연산을 체이닝 방식으로 연결하여 실행하고 함수형 프로그래밍이 가능하게 해줍니다.
public List<PostsResponseDto> findAllDesc(){
return postsRepository.findAllDesc().stream()
.map(PostsResponseDto::new)
.collect(Collectors.toList());
}
- stream()
- 반복문을 사용하지 않고 연속된 요소에 대한 연산을 수행할 수 있게 해주는 메서드
- 리스트에 대한 Stream을 생성한다. Stream은 데이터 흐름을 나타내며, 연속된 요소에 대한 연산을 수행할 수 있게 한다.
- Java에서는 stream()메서드를 통해 Stream객체를 생성하고, 이 위에서 'map', 'filter', 'reduce' 등의 연산을 수행할 수 있다.
- Java의 List나 Collection 타입들에는 직접적인 map 메서드를 사용할 수 없다. 따라서 map을 수행하려면 반복문을 사용해서 직접 구현해야 한다.
- map()
- 스트림의 각 요소를 특정 방식으로 변환한다.
- 위의 코드에서는 post를 조회한 데이터를 PostsResponseDto 생성자를 통해 새로운 객체로 변환해 줍니다.
- collect()
- 스트림의 결과를 원하는 형태의 컬렉션으로 변환해줍니다.
- Collectors.toList() 는 스트림 요소를 리스트로 수집합니다.
- 위의 코드에서는 PostsResponseDto로 변환된 객체들을 List로 만들어서 반환해줍니다.
'Project > SpringBoot를 사용해서 웹 서비스를 만들어보자' 카테고리의 다른 글
Spring Boot 2.0 과 Spring Security 5의 OAuth 2.0 클라이언트 설정 방법 : CommonOAuth2Provider (0) | 2023.09.02 |
---|---|
템플릿 엔진이란 (0) | 2023.08.22 |
Spring 웹 계층 (0) | 2023.08.18 |
자주 사용하는 Lombok 어노테이션 정리 (0) | 2023.08.17 |
JPA Auditing (0) | 2023.08.17 |