본문 바로가기

개발일지95

리스트 조회할 때 DTO 잘 쓰기 기존의 나는 DTO를 이용하긴 했으나, 배열로 나온다는 문제점이 있었다. 기존 코드 @Override @Transactional(readOnly = true) public ResponseEntity getProductList(int page, int size){ Pageable pageable = PageRequest.of(page-1, size); Page products = productRepository.findAll(pageable); List productReponseDtoList = products.stream() .map(product -> new ProductResponse(product)).collect(Collectors.toList()); return new ResponseEntity.. 2023. 1. 31.
테스트 코드 문제상황 발생!! 테스트 코드를 배우고 직접 작성해보았다. 그런데, @ExtendWith(MockitoExtension.class) class UserServiceImplTest { @Mock private UserRepository userRepository; @InjectMocks private UserServiceImpl userService; @Spy private JwtUtil jwtUtil; @Spy private PasswordEncoder passwordEncoder; @Spy private ProductRepository productRepository; @Test @DisplayName("회원 가입") void signup() { //given SignupRequestDto signupRequestDto.. 2023. 1. 26.
PasswordEncoder 비밀번호 비교 이슈 문제상황 PasswordEncoder 는 스프링 시큐리티의 인터페이스 객체이다. 이름 그대로 비밀번호를 암호화하는 역할인데, 로그인 기능을 구현할 때, 비교가 안되는 상황이 발생했다. @Transactional @Override public void login(LoginRequestDto loginRequestDto, HttpServletResponse response){ String userId = loginRequestDto.getUserId(); String password = passwordEncoder.encode(loginRequestDto.getPassword()); User user = userRepository.findByUserId(userId).orElseThrow(() -> new .. 2023. 1. 24.
orElseThrow 메소드 User user = userRepository.findByLoginId(loginId).orElseThrow( () -> new CustomException(ExceptionStatus.USER_IS_NOT_EXIST) ); 프로젝트 진행 중, 사용하기만 할 뿐 잘 알지 못하는 부분들이 몇개 있어서 하나하나 알아보려고 한다. orElseThrow 메소드 orElseThrow 메소드는 Optional 클래스에서 제공하는 메소드이다. 만약 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 예외를 발생시킨다. 그래서 위의 코드를 보면, Repository에서 LoginId값으로 user를 찾아 생성하는데, 만약 없다면 예외를 발생시키는 기능을 하게 되는 것이다. 예외를 발생시키는 기능을 사용하면, 값이.. 2023. 1. 21.