[일일회고]
[소마]
- 요즘 월~목으로 오후 1시부터 오후 6시까지 오프라인 프로젝트를 진행하고 금~일은 따로 시간을 내서 프로젝트를 진행하다보니 생각보다 여유가 많진 않은 것 같다. 이번주 중으로 웹소켓을 제외하고는 프로젝트 인프라 세팅이 어느정도 끝나서 개발만 진행하고 있다보니 블로그 글을 마땅히 쓸 것이 떠오르지 않아서 인프런 강의를 다시 듣고 있다. 인프런 고급편에서는 다양한 디자인패턴들을 소개하고 있는데 이를 프로젝트에 빠르게 적용하고 싶지만, 팀원에게도 사용법을 알려주고 적용을 해야하는데 그렇게 하다보면 개발 속도가 더뎌지다 보니 고민이 된다. 조금 더 고민해보고 적용할 수 있는 방향으로 진행해봐야겠다.
[개인공부]
[인프런] 스프링 고급편 쓰레드 로컬 & 템플릿 메서드 패턴
- 쓰레드 로컬이란
스프링에서 bean은 기본세팅으로 싱글톤으로 등록되는데, 이 객체의 인스턴스가 어플리케이션에 한 개만 존재하게 된다. 즉 Repository, Service, Controller 등 Bean으로 등록된 객체는 하나만 존재하며 서버에 올라갈 경우 여러 쓰레드에서 접속이 가능하다. (새로고침 등으로 하나의 사용자도 해당 문제를 일으킬 수 있다.)
이로 인해 단순 read가 아닌 write를 할 경우 한 쓰레드의 요청이 끝나기 전 다른 쓰레드의 요청은 동시성 문제를 일으켜 값의 일관성을 보존시키지 못한다. 그래서 쓰레드 로컬은 하나의 쓰레드가 해당 쓰레드만 접근할 수 있는 특별한 저장소를 만들어 다른 쓰레드가 접속할 수 없는 공간을 만든다. 이를 통해 같은 인스턴스의 쓰레드 로컬 필드에 접근해도 문제가 생기지 않는다.
하지만 쓰레드로컬은 쓰레드마다 새로운 공간을 잡기때문에, 사용이 끝난 경우 .remove를 통해 수동 제거를 해주어야 한다.
- template method 패턴이란
디자인 패턴 중 하나로, 어떤 특정한 코드에서 반복되는 부분과 반복되지 않는 부분으로 구분할 때 반복되는 작업을 서브 클래스로 캡슐화하여 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에 수행하는 내역을 바꾸는 패턴이다.
<body1> <body2> <body3>에서 body1,3이 반복되는 부분이고, body2만 반복되지 않는 부분이라면 해당 파트를 서브클래스에 추상화된 메서드로 만들어 처리하도록 하는 것이다.
이를 사용함으로써 얻는 점은 전체적으로는 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화하며, 이 중복된 코드의 수정이 있을 경우 클래스 내부만 변경함으로써 전체 코드를 변경가능해 유지보수적으로 상당한 이점이 있다.
자바에서는 익명 클래스를 이용해 서브클래스를 따로 제작하지 않고 사용이 가능하다.
그러나 상속을 사용하다보니 자식 클래스는 부모 클래스에 의존적이 되고, 부모 클래스 변경에 큰 영향을 받게 된다.
그래서 내일은 전략패턴에 대해서 알아보려고한다.
[운동]
헬스 1시간
'일간 회고록(TIL)' 카테고리의 다른 글
[22.08.07] Daily 회고록 (스프린트 회의, 전략(Strategy) 패턴) (0) | 2022.08.08 |
---|---|
[22.08.04] Daily 회고록 (Builder 패턴, @Builder, @Singular) (0) | 2022.08.05 |
[22.07.29] Daily 회고록 (소마캠프, UCPC 경품 당첨) (0) | 2022.07.30 |
[22.07.27] Daily 회고록 (AWS SSL, 포트포워딩) (0) | 2022.07.28 |
[22.07.20] Daily 회고록 (AWS 심화 교육, 스크럼 회의, 단위 테스트) (0) | 2022.07.21 |