🛹 목표
목표 | 난이도 | 달성 여부 |
토비 스프링 | 😖 | ✔️ |
패스트 캠퍼스 강의 듣기 | 🥺 | ✔️ |
알고리즘 문제풀이 | 😘 | ✔️ |
📋 공부 내용 & 기록
싱글톤 패턴의 한계
1. private 생성자를 갖고 있기 때문에 상속할 수 없다.
- private 생성자는 다른 생성자가 없는 이상 상속이 불가능하다.
2. 싱글톤은 테스트하기 힘들다.
- 싱글톤은 만들어지는 방식이 제한적이기 때문에 테스트에서 사용될 때 mock 오브젝트 등으로 대체하기 힘들다.
3. 서버환경에서는 싱글톤이 하나만 만들어지는 것을 보장하지 못한다.
- 서버에서 클래스 로더를 어떻게 구성하고 있느냐에 따라 싱글톤 클래스임에도 하나 이상의 오브젝트가 만들어 질 수 있다.
- 여러 개의 JVM에 분산돼서 설치가 되는 경우에도 각각 독립적으로 오브젝트가 생기기 때문에 싱글톤으로서의 가치가 떨어진다.
4. 싱글톤의 사용은 전역 상태를 만들 수 있기 때문에 바람직하지 못하다.
- 싱글톤의 static 메서드를 이용해 언제든지 싱글톤에 쉽게 접근할 수 있기 때문에 애플리케이션 어디서든지 사용될 수 있고, 그러다 보면 자연스럽게 전역상태로 사용되기 쉽다.
Mock VS MockBean
Mockito @Mock @MockBean @Spy @SpyBean 차이점
예제 코드 https://github.com/cobiyu/MockitoSample Test Double이 왜 필요한 지부터 시작하는 기본적인 테스트 코드부터 한 단계씩 발전시켜나가며 Mockito의 어노테이션들의 정확한 쓰임새에 대해 살펴보겠습
cobbybb.tistory.com
- @Mock은 @InjectMocks에 대해서만 해당 클래스 안에서 객체를 찾아서 의존성을 해결
- @MockBean은 mock 객체를 스프링 컨텍스트에 등록하는 것이기 때문에 @SpringBootTest를 통해서 @Autowired가 동작할 때 등록된 mock 객체를 사용하도록한다.
- @Mock은 테스트 코드에서 원하는 행위를 작성하여 테스트에서 원하는 상황을 설정하도록 하는 어노테이션
- @Spy는 실제 기능을 그대로 사용하고 싶은 경우에 사용한다.
- @SpyBean이 Interface일 경우에는 해당 Interface를 구현하는 실제 구현체가 꼭 스프링 컨텍스트에 등록되어 있어야 한다. 등록되지 않았다면 @MockBean을 사용하는 것이 낫다.
GenerationType의 Sequence와 Identity의 차이
@SpringBootTest / @DataJpaTest 차이점 과 JPA 영속성 컨텍스트
Memory db를 이용한 Repository Test Repository layer의 테스트를 위해서 내장 Memory DB를 많이 사용합니다. Memory DB 를 사용하는 방법도 천차만별일텐데 크게는 2가지 정도라 생각됩니다. @SpringBootTest+ Memory DB
cobbybb.tistory.com
'TIL' 카테고리의 다른 글
[TIL] 🌱 2023.04.10 - 스프링 시큐리티 세션 (0) | 2023.04.10 |
---|---|
[TIL] 🌱 2023.04.01 - Projection (0) | 2023.04.01 |
[TIL] 🌱 2023.03.27 - Rest Client Test (0) | 2023.03.27 |
[TIL] 🌱 2023.03.21 - 함수적 인터페이스 (0) | 2023.03.21 |
[TIL] 🌱 2023.03.20 - Objects.requireNonNull() (0) | 2023.03.20 |