diff --git a/src/main/java/EatPic/spring/domain/user/service/UserServiceImpl.java b/src/main/java/EatPic/spring/domain/user/service/UserServiceImpl.java index 3e02d93..52a577e 100644 --- a/src/main/java/EatPic/spring/domain/user/service/UserServiceImpl.java +++ b/src/main/java/EatPic/spring/domain/user/service/UserServiceImpl.java @@ -31,6 +31,7 @@ import org.springframework.security.core.Authentication; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import EatPic.spring.global.aws.s3.*; @@ -40,7 +41,7 @@ import static EatPic.spring.global.common.code.status.ErrorStatus.*; @Service -@Transactional +@Transactional(readOnly = true) @RequiredArgsConstructor public class UserServiceImpl implements UserService{ @@ -57,6 +58,7 @@ public class UserServiceImpl implements UserService{ private final AmazonS3Manager s3Manager; // 회원가입 + @Transactional(readOnly = false) public SignupResponseDTO signup(SignupRequestDTO request) { // 이메일 중복 검사 if (userRepository.existsByEmail(request.getEmail())) { @@ -96,6 +98,7 @@ public SignupResponseDTO signup(SignupRequestDTO request) { // 로그인 @Override + @Transactional(readOnly = false) public LoginResponseDTO loginUser(LoginRequestDTO request){ User user = userRepository.findByEmail(request.getEmail()) .orElseThrow(()-> new ExceptionHandler(ErrorStatus.MEMBER_NOT_FOUND)); @@ -247,6 +250,7 @@ public boolean isNicknameDuplicate(String nickname) { } @Override + @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) public User getLoginUser(HttpServletRequest request) { Authentication authentication = jwtTokenProvider.extractAuthentication(request); String email = authentication.getName(); @@ -269,6 +273,7 @@ public UserResponseDTO.DetailProfileDto getProfile(HttpServletRequest request, L } @Override + @Transactional(readOnly = false) public UserResponseDTO.UserActionResponseDto unfollowUser(HttpServletRequest request, Long targetUserId) { User user = getLoginUser(request); User target = userRepository.findUserById(targetUserId); @@ -284,6 +289,7 @@ public UserResponseDTO.UserActionResponseDto unfollowUser(HttpServletRequest req } @Override + @Transactional(readOnly = false) public UserResponseDTO.UserActionResponseDto followUser(HttpServletRequest request, Long targetUserId) { User user = getLoginUser(request); if(user.getId().equals(targetUserId)) { @@ -306,6 +312,7 @@ public UserResponseDTO.UserActionResponseDto followUser(HttpServletRequest reque // 유저 프로필 이미지 업데이트 @Override + @Transactional(readOnly = false) public UserResponseDTO.ProfileDto updateUserProfileImage(HttpServletRequest request, MultipartFile profileImage,User user) { String profileImageUrl = null; @@ -335,6 +342,7 @@ public UserResponseDTO.ProfileDto updateUserProfileImage(HttpServletRequest requ // 유저 소개 업데이트 @Override + @Transactional(readOnly = false) public UserResponseDTO.ProfileDto updateIntroduce(HttpServletRequest request, UserRequest.UpdateUserInroduceRequest introduce, User user) { user.setIntroduce(introduce.getIntroduce()); // introduce 부분만 변경