728x90
반응형
< SimpleProductService.java >
package kr.co.hanbit.product.management.application;
import kr.co.hanbit.product.management.domain.Product;
import kr.co.hanbit.product.management.infrastructure.ListProductRepository;
import kr.co.hanbit.product.management.presentation.ProductDto;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SimpleProductService {
private ListProductRepository listProductRepository; // 에러 1
private ModelMapper modelMapper; // 에러 2
@Autowired
SimpleProductService(ListProductRepository listProductRepository, ModelMapper modelMapper) {
this.listProductRepository = listProductRepository;
this.modelMapper = modelMapper;
}
public ProductDto add(ProductDto productDto) {
//1. ProductDto를 Product로 변환하는 코드
Product product = modelMapper.map(productDto, Product.class);
//2. 레포지토리를 호출하는 코드
Product savedProduct = listProductRepository.add(product);
//3. Product를 ProductDTO로 변환하는 코드
ProductDto savedProductDto = modelMapper.map(savedProduct, ProductDto.class);
//4. DTO를 반환하는 코드
return savedProductDto;
}
public ProductDto findById(Long id) {
Product product = listProductRepository.findById(id);
ProductDto productDto = modelMapper.map(product, ProductDto.class);
return productDto;
}
public List<ProductDto> findAll() {
List<Product> products = listProductRepository.findAll();
List<ProductDto> productDtos = products.stream()
.map(product -> modelMapper.map(product, ProductDto.class))
.toList();
return productDtos;
}
public List<ProductDto> findByNameContaining(String name) {
List<Product> products = listProductRepository.findByNameContaining(name);
List<ProductDto> productDtos = products.stream()
.map(product -> modelMapper.map(product, ProductDto.class))
.toList();
return productDtos;
}
}
표시된 부분에서 각각의 에러가 발생하였다.
Field 'listProductRepository' may be 'final'.
Field 'modelMapper' may be 'final'.
노란줄 너무 거슬리쟈나 ...🥺
해당 에러는 listProductRepository와 modelMapper 필드가 초기화된 후 변경되지 않을 경우,
해당 필드를 final로 선언할 수 있다는 의미이다.
- 객체의 불변성 높여줄 수 있음.
- 코드의 안정성 개선 가능.
위와 같은 장점을 줄 수 있기 때문에,
final로 선언하면 된다.
< SimpleProductService.java > 수정본
package kr.co.hanbit.product.management.application;
import kr.co.hanbit.product.management.domain.Product;
import kr.co.hanbit.product.management.infrastructure.ListProductRepository;
import kr.co.hanbit.product.management.presentation.ProductDto;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SimpleProductService {
private final ListProductRepository listProductRepository; // 수정 1
private final ModelMapper modelMapper; // 수정 2
@Autowired
SimpleProductService(ListProductRepository listProductRepository, ModelMapper modelMapper) {
this.listProductRepository = listProductRepository;
this.modelMapper = modelMapper;
}
public ProductDto add(ProductDto productDto) {
//1. ProductDto를 Product로 변환하는 코드
Product product = modelMapper.map(productDto, Product.class);
//2. 레포지토리를 호출하는 코드
Product savedProduct = listProductRepository.add(product);
//3. Product를 ProductDTO로 변환하는 코드
ProductDto savedProductDto = modelMapper.map(savedProduct, ProductDto.class);
//4. DTO를 반환하는 코드
return savedProductDto;
}
public ProductDto findById(Long id) {
Product product = listProductRepository.findById(id);
ProductDto productDto = modelMapper.map(product, ProductDto.class);
return productDto;
}
public List<ProductDto> findAll() {
List<Product> products = listProductRepository.findAll();
List<ProductDto> productDtos = products.stream()
.map(product -> modelMapper.map(product, ProductDto.class))
.toList();
return productDtos;
}
public List<ProductDto> findByNameContaining(String name) {
List<Product> products = listProductRepository.findByNameContaining(name);
List<ProductDto> productDtos = products.stream()
.map(product -> modelMapper.map(product, ProductDto.class))
.toList();
return productDtos;
}
}
728x90
반응형
'[Language] > Java | Spring | JSP' 카테고리의 다른 글
[Java Swing] Eclipse에서 Java Swing 설치하기 (1) | 2024.06.18 |
---|---|
Local variable 'savedProductDto' is redundant : 해당 변수 불필요 (0) | 2024.05.27 |
BeanCreationException : modelMapper Bean 생성 에러 (0) | 2024.05.26 |
[MAC/Homebrew] JAVA 11 설치 (0) | 2023.10.25 |
[Mac/Intellij] 포트 겹쳤을 때 (0) | 2023.10.20 |