springboot (13) 썸네일형 리스트형 [SpringBoot] SpringBoot로 AWS S3 Bucket에 이미지 업로드 본격적으로 프로젝트에서 이미지를 S3 bucket으로 업로드 하기 위해 업로드 테스트 스크립트를 작성해 보았다. 1. bulid.graddle //aws implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' implementation "com.amazonaws:aws-java-sdk-s3:1.12.395" aws 관련 implementation을 추가해 주었다. 2. application.yml # multipart 설정 spring.servlet.multipart.max-file-size: 10MB spring.servlet.multipart.max-request-size: 10MB # aws 설정 cloud:.. [24] mutsa-SNS-2 6일차 - (1) 알람 기능 test code 알람 기능의 controller의 test code를 추가하였다. 해당 test는 아래 두가지로 진행하였다. 알람 목록 조회 성공 알람 목록 조회 실패 - 로그인하지 않은 경우 AlarmControllerTest @WebMvcTest(AlarmController.class) class AlarmControllerTest { @Autowired MockMvc mockMvc; @MockBean AlarmService alarmService; @Test @DisplayName("알람 목록 조회 성공") @WithMockUser void alarm_get_success() throws Exception { when(alarmService.getAlarm(any(), any())) .thenReturn(Page... [23] mutsa-SNS-2 5일차 - 알람 기능 추가 알람 기능을 추가해 보았다. 로그인 한 유저에게 달린 모든 댓글과 좋아요를 page형태로 return 자신이 자신의 글에 댓글과 좋아요를 달 시 알람 x 좋아요 취소후 재등록시 알람 x 1. Domain Alarm (Entity) @Builder @AllArgsConstructor @NoArgsConstructor @Getter @Setter @Table(name = "alarm") @Entity @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) public class Alarm extends BaseEntity{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id.. [22] mutsa-SNS-2 4일차 - 마이 피드 기능 test code 마이 피드 기능 test code를 추가하였다. 아래의 case를 테스트 해보았다. 마이피드 조회 성공 마이피드 조회 실패 - 로그인 하지 않은 경우 PostControllerTest @WebMvcTest(PostController.class) class PostControllerTest { @Autowired MockMvc mockMvc; @MockBean PostService postService; @Autowired ObjectMapper objectMapper; ... @Test @DisplayName("마이피드 조회 성공") @WithMockUser void myFeed_get_success() throws Exception { when(postService.getMyFeed(any(), any.. [21] mutsa-SNS-2 3일차 - (2) 마이 피드 기능 구현 내가 쓴 글 리스트를 보여주는 마이피드 기능을 구현했다. 내가 작성한 글만 보이는 기능 제목, 글쓴이, 내용, 작성날짜가 표시 목록 기능은 페이징 기능이 포함 (Post 조회와 동일) 단지 Post 전체 조회와 다른 것이 user로 post를 검색하는 로직 추가 밖에 없어 간단히 구현했다. 1. Repository PostRepository public interface PostRepository extends JpaRepository { Page findAllByUser(User user, Pageable pageable); } 해당 User로 post를 검색하여 page에 담아 return하는 method를 추가했다. 2. Service PostService @Service @RequiredArgsC.. [20] mutsa-SNS-2 3일차 - (1) soft delete 관련 리펙토링 (@Transactional 이슈) post가 delete될 때, 그와 관련되어 있는 comment와 like도 soft delete처리를 추가해 주었다. 이 과정에서 생겼던 Transactional 관련 이슈와 그로 인해 jpql method를 줄이고 jpa를 사용하기 위해 리펙토링 한 과정을 적어보았다... 1. @Transactional jpa의 경우 더티체킹을 지원한다. 이는 상태 변경에 대한 검사라 생각하면 된다. JPA로 엔티티를 조회하게 되면, 엔티티 조회 상태 그대로 스냅샷을 만들게 되고, 엔티티를 수정하여 트랜젝션을 커밋 할 때, flush가 일어나게 되는데, 그 때 초기 조회 상태의 스냅샷과 비교하여 변화가 발생하면, update query를 날리게 된다. 이로 인해 따로 save를 해주지 않아도 update query가.. [19] mutsa-SNS-2 2일차 - (2) 좋아요 기능 test code 앞서 만든 좋아요 기능이 제대로 작동하는지 test code를 통해 검증해보았다. 좋아요 누르기 성공 좋아요 누르기 실패 - 로그인 하지 않은 경우 좋아요 누르기 실패 - 해당 Post가 없는 경우 1. PostControllerTest @WebMvcTest(PostController.class) class PostControllerTest { @Autowired MockMvc mockMvc; @MockBean PostService postService; @Autowired ObjectMapper objectMapper; ... @Test @DisplayName("좋아요 누르기 성공") @WithMockUser void like_do_success() throws Exception { when(postS.. [16] mutsa-SNS-2 1일차 - (1) 댓글 기능 구현 1주차 2주차 미션이 끝난 후 2일 휴강과 주말을 푹 쉬었다... 새로운 마음으로 새 기능을 구현해 보았다. 오늘 구현한 기능은 댓글 기능이다. 댓글 목록은 모든 유저가 조회 가능 댓글 작성은 로그인 한 유저만 가능 댓글 수정/삭제는 댓글 작성 유저만 가능 (ADMIN유저는 모든 댓글에 대하여 수정/삭제 가능) 1. Configuration SwaggerConfig @Configuration @RequiredArgsConstructor public class SwaggerConfig { private final TypeResolver typeResolver; @Bean public Docket api() { return new Docket(DocumentationType.OAS_30) //swagger .. 이전 1 2 다음