![[삽질록] Spring Security 인증 구현 하고 insert 테스트 오류 (AuditorAware)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbozL7h%2FbtsJjnxY9fB%2FJseDpEy2AuVHozKYNChzw1%2Fimg.png)
🆘 문제상황spring security로 인증을 구현 후 기존의 Test를 돌렸더니 insert 에서 에러가 발생했다.기존 코드/*단위 테스트에서는 spring 컨테이너를 사용하면 안된다.@DataJpaTest: repository 객체를 의존주입 받을 수 있게 해준다. | @Transactional 을 갖고있어서 테스트 이후 자동 롤백 가능 */@DisplayName("JPA 연결 테스트")@Import(JpaConfig.class)@DataJpaTestpublic class JpaRepositoryTest { @Autowired private PostRepository postRepository; @Autowired private PostCommentRepository postCommen..
🆘 문제상황@DisplayName("컨트롤러 - Post")@WebMvcTest(PostController.class) //MVC 관련 빈들만 로드함 - 테스트 실행이 빠르고, 메모리 사용량 적음 | 서비스, 리포지토리 등의 빈은 로드되지 않음class PostControllerTest { private final MockMvc mvc; //HTTP 요청을 모의(mock)하여 컨트롤러의 동작을 테스트 | 실제 웹 서버를 띄우지 않고도 컨트롤러의 요청-응답 흐름을 테스트할 수 있음 // 필드주입 @MockBean // ->MockBean이 생성자 주입 지원하지 않음 private PostService postService; // 생성자주입 PostControllerTest..
![[삽질록] DataIntegrityViolationException예외 해결 : AuditingFields → JpaConfig 설정하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0g1oW%2FbtsI4TpUisR%2FZskfwQepeBrxe9dBnvqdFK%2Fimg.png)
Jpa Auditing 이란?Spring Data JPA에서 누가, 언제에 대한 값을 자동으로 넣어주는 기능🆘 문제상황not-null property references a null or transient value : cohttp://m.project.sns.domain.Post.createdAtorg.springframework.dao.DataIntegrityViolationException: not-null property references a null or transient value : cohttp://m.project.sns.domain.Post.createdAt → JPA 연동 테스트를 진행하던 중에 위의 insert 테스트의 Post savedPost = postRepository.sa..
![[JPA] Pageable?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiN4Yq%2FbtsHQj4jwIm%2FDWombIqS2x3ZFO9OTuN1WK%2Fimg.png)
✅ Githttps://github.com/ellaCoo/project-board-fc/issues/6✅ 개념PageableSpring Data JPA에서 페이징 처리와 정렬을 간편하게 하기 위해 제공하는 인터페이스페이지 번호, 페이지 크기, 정렬 정보 등을 포함 (페이징과 정렬 정보를 캡슐화)Pageable의 역할페이징 처리 :페이지 번호와 페이지 크기를 지정하여 데이터베이스 조회 시 페이징을 처리정렬 처리 :정렬 기준과 정렬 방향을 지정하여 데이터베이스 조회 시 정렬을 처리유연성 제공 :컨트롤러 메서드에서 간단하게 페이징과 정렬을 처리할 수 있도록 지원데이터 전송 객체 :페이징과 정렬 정보를 캡슐화하여 서비스 계층으로 전달✅ 예제/* ArticleController */@GetMappingpublic..
![[운영체제] 싱글턴 객체에서 상태를 유지하게 설계하면 안되는 이유? (레이스 컨디션)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV5S9Y%2FbtsHx2bkh48%2FVy4qpsJDYBofKrdaxjD7o0%2Fimg.png)
✅ Git https://github.com/ellaCoo/mvc_programming/commit/1bd5b50b66dadf3342911a5330a7b68f9708d408출력을 보면 예상과 다른 결과가 나옴⇒ 싱글턴 객체에서 상태를 유지하게 설계되면 문제가 발생한다!멀티스레드 환경에서 하나의 객체(자원)를 공유하게 되면 우리가 뜻하지 않은 레이스 컨디션 문제 발생함✅ 개념레이스 컨디션두 개 이상의 프로세스 혹은 스레드가 하나의 자원을 서로 사용하려고 경합(Race)하는 상태 = 즉, 여러 스레드가 하나의 자원에 동시에 접근하기 위해 경쟁을 하면서 우리가 원하지 않는 결과가 나옴⇒ 싱글턴 객체에서 상태를 유지하게 설계되면 Thread-safety 하지 않다!스레드가 안전하다면 우리가 예상한 결과가 나왔어..
![[HTTP] http는 왜 stateless, connectionless할까?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbH84ut%2FbtsHzvXDLtU%2F9q2kF6nJfgLCRbCKcRFEU0%2Fimg.png)
✅ 개념HTTP서버와 클라이언트가 웹에서 데이터를 주고받기 위한 프로토콜 (규약)HTTP/1.1, HTTP/2는 TCP 기반 위에서 동작HTTP/3는 UDP 기반 위에서 동작 → 3-way 핸드쉐이크로 연결을 맺을 필요가 없다.HTTP 요청/응답 메시지 구조 (http://www.ktword.co.kr/test/view/view.php?m_temp1=4884)특징클라이언트 - 서버 모델무상태 프로토콜 (Stateless)서버가 클라이언트 상태를 유지하지 않음= 클라이언트가 서버에 요청을 보내면 서버는 클라이언트에게 응답을 주고, 바로 close하며 연결을 끊어버림= 즉, 서버가 클라이언트의 상태를 유지하지 않음⇒ 해결책 : Keep-Alive 속성 사용 비 연결성 (Connectionless)서버가 클라..
✅ Githttps://github.com/ellaCoo/mvc_programming/commit/e42ad1ac0de1c13941916ffb113a7d7d5cb6f7ab#diff-3983a785bd8b8ba7768b0d623d585772eb43010facb59e56a4106acfbaad6f92✅ 개념JUnit과 함께 사용하는 AssertJ 라이브러리→ 다양한 어설션 메서드를 제공하여 테스트 코드 읽기 쉽고 유연하게 만들어 줌많이 사용되는 메서드 : assertThat, assertThatCodeassertThat객체, 값, 컬렉션, 배열 등의 상태를 확인assertThatCode주로 예외를 던지는 코드를 테스트할 때 사용코드 블록이 예외를 던지는지 여부를 확인하거나, 특정 예외가 발생했는지를 검증✅ 예..
![[디자인패턴] 일급 컬렉션이란? +리팩토링](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FETkB4%2FbtsHxqpgu2U%2FmcsLkFWGniEhkj9VwHZuJ0%2Fimg.png)
✅ Githttps://github.com/ellaCoo/mvc_programming/commit/e128b42454a77bd972e3fb56e4743bbbb31c1949✅ 개념- 컬렉션을 포함하는 클래스가 단 하나의 컬렉션만을 멤버 변수로 가지는 디자인 패턴- 이 패턴은 컬렉션을 직접 사용하는 대신, 컬렉션을 포장하는 클래스를 통해 사용함으로써 다양한 이점을 제공- 일급 컬렉션은 주로 코드의 가독성, 유지보수성, 객체 지향 설계의 원칙을 준수하기 위해 사용✅ 예제일급 컬렉션(Courses): 리스트 형태로 된 Course 정보만 인스턴스 변수로 가지는 클래스이다.→ 이 정보를 가지고 처리할 수 있는 책임들이 Courses라는 일급 컬렉션 밑으로 모두 이동함 import java.util.List;// ..