0829 개발일지

Yesol Lee·2022년 8월 29일
0

개발일지 - 2022

목록 보기
125/187

오늘 한 일

  • 인프런 강의 스프링 핵심 원리 - 기본편 수강 중 : 프로젝트 생성 ~ 관심사의 분리까지 수강

CurrentHashMap

  • 강사님께서 잠깐 이야기하고 지나갔던 개념인데 처음 들어봐서 검색해보았다.
  • 기존 코드에서 저장소로 사용한 hashmap은 여러 객체가 접근해서 동시에 수정하면 오류가 날 수 있다.
  • 이렇게 동시 작업 시 예상치못한 오류가 발생하는 것을 막기 위해 한 객체가 작업 중이면 다른 객체가 접근할 수 없도록 막아버리는 것을 (Lock) synchronized를 붙여 표현한다고 한다.
    java ConcurrentHashMap
  • Hashtable : 모든 기능은 동시작업 불가
  • HashMap : 모든 기능 동시작업 가능 (멀티스레드 사용 불가)
  • ConcurrentHashMap : 읽기는 동시작업 가능, 쓰기는 동시작업 불가

구현체에 의존하는 코드의 문제점

  • OCP 원칙을 지키기 위해서 구현체가 아닌 추상화에 의존해야 함 (그래야 나중에 구현체만 바꿀 수 있다)
  • 구현체에 의존하는 경우 기존 코드에 변형이 필요함
// MemberServiceImpl.java

// 구현체에 의존하는 코드
// private final MemberRepository memberRepository = new MemoryMemberRepository();

// 외부에서 구현체 주입. 어떤 구현체가 주입될 지 전혀 알 수 없다
private final MemberRepository memberRepository;
public MemberServiceImpl(MemberRepository memberRepository) {
	super();
	this.memberRepository = memberRepository;
}
// AppConfig.java
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 활용 이 글의 대부분을 아직 이해하지 못했지만.. 사용법이 다양하다는 것을 알겠다.
profile
문서화를 좋아하는 개발자

0개의 댓글