오늘 한 일
- 인프런 강의
스프링 핵심 원리 - 기본편
수강 중 : 프로젝트 생성 ~ 관심사의 분리까지 수강
CurrentHashMap
- 강사님께서 잠깐 이야기하고 지나갔던 개념인데 처음 들어봐서 검색해보았다.
- 기존 코드에서 저장소로 사용한 hashmap은 여러 객체가 접근해서 동시에 수정하면 오류가 날 수 있다.
- 이렇게 동시 작업 시 예상치못한 오류가 발생하는 것을 막기 위해 한 객체가 작업 중이면 다른 객체가 접근할 수 없도록 막아버리는 것을 (Lock)
synchronized
를 붙여 표현한다고 한다.
java ConcurrentHashMap
Hashtable
: 모든 기능은 동시작업 불가
HashMap
: 모든 기능 동시작업 가능 (멀티스레드 사용 불가)
ConcurrentHashMap
: 읽기는 동시작업 가능, 쓰기는 동시작업 불가
구현체에 의존하는 코드의 문제점
- OCP 원칙을 지키기 위해서 구현체가 아닌 추상화에 의존해야 함 (그래야 나중에 구현체만 바꿀 수 있다)
- 구현체에 의존하는 경우 기존 코드에 변형이 필요함
private final MemberRepository memberRepository;
public MemberServiceImpl(MemberRepository memberRepository) {
super();
this.memberRepository = memberRepository;
}
public MemberService memberService() {
return new MemberServiceImpl(new MemoryMemberRepository());
}
public OrderService orderService() {
return new OrderServiceImpl(new MemoryMemberRepository(), new FixDiscountPolicy());
}
클래스 공통속성 부모 클래스로 묶기
- 팀원분과 이야기하다가 아래 블로그를 보게 되었는데, jpa로 date를 자동생성하는 방법에 대한 글이지만 나는 date 속성을 부모 클래스로 분리한 것이 눈에 들어왔다.
- 연습 삼아 부모클래스 속성을 상속받게 구현하는 것도 괜찮을 것 같다. 추후 Post와 Comment는 같은 부모를 공유할 수 있을 것 같다.
BaseTime Class
enum의 활용

- 강의를 통해 java
enum
을 처음 사용해보았다.
- 변하지 않은 상수값, 카테고리 등의 정보를 저장하기에 편리하다.
- 우리 프로젝트에서도 user.type을 Admin, user로 분리하는 데에 사용할 수 있을 것 같다.
enum
으로 검색하니 생각보다 복잡한 구조를 담을 수도 있는 것 같다. 우아한형제들-java enum 활용 이 글의 대부분을 아직 이해하지 못했지만.. 사용법이 다양하다는 것을 알겠다.