-
Notifications
You must be signed in to change notification settings - Fork 0
2조 그룹 리뷰
Semin Choi edited this page Jul 28, 2024
·
8 revisions
- 인풋스트림을 받아서 버퍼드리더로 받으면 바이너리 파일이 손상될 수 있습니다. 이유는 인코딩에서 오류가 나면서 정확한 글자로 변환이 되지 않으면 바이트로 다시 변경할 때, 다른 바이트가 만들어지거나 바이트가 추가되거나 등 처음 바이트 입력과 결과가 달라질 수 있습니다.
- 그리고 인풋스트림은 바이트를 하나 읽을 때마다 io 가 있으므로 버퍼드인풋스트림을 사용해야겠습니다.
- 쿠키로 타겟 페이지를 지정한다.
- test 가 터져서 DI 를 적용했다.
- I/O Stream에 대해서 더 공부해봐야겠다
- WAS 7/8 단계 구현
- 게시글 작성, 댓글 작성, 게시글/댓글 목록 조회 기능 구현
- 멀티 파트 파싱 및 이미지 업로드, 조회 기능 구현
-
setting.properties
기반 설정 기능 구현
-
JDBCTemplate
을 구현한 코드를 봤는데, 데이터 관리 코드가 엄청 간단해져서 정말 좋았습니다! 저도 구현해보려고 합니다!! - 여러 객체들을 생성해야 하다보니, 어노테이션, xml 등으로 객체 생성 기능을 구현하신 분들이 많으셨습니다. 특히, 의존성 주입까지 리플렉션으로 구현하는 코드는 처음 봤는데, 신기했습니다!
- 현재 만드려는 객체보다 해당 객체의 의존 객체를 더 먼저 만들어야 하다보니, 생성 시 순서가 필요한데, 이를 큐나 재귀, 위상 정렬로 해결하신 것이 인상 깊었습니다.
- 파일 기반 Database는 사용 중임을 알리기 위해 락 파일을 만드는 것이 싫어 TCP 서버를 띄우신 분들이 계셨습니다. 아무런 생각 없이 파일로 해야지, 한 걸 고민하신 게 좋았습니다!
-
InputStream
은 커널 io가 많으니BufferedInputStream
을 사용해야겠습니다!
- 내가 해보지 않은 리팩토링을 적용했을 때, 코드가 이렇게 되겠구나, 미리 보기 코드가 생긴 것 같아 좋았습니다.
- 다양한 구조, 리팩토링, 기능들을 보니 할 수 있는 것들이 이만큼 남았구나 싶습니다..! 열심히 해보겠습니다!
- 개별 스레드를 할당해서 H2 TCP 서버를 띄워 TCP 통신으로 H2를 연결합니다!
- 생성 시 .db 파일이 존재하지 않는 경우 init.sql을 활용해서 .db 파일을 생성해주는 로직도 포함되어 있어요!
- BufferedInputStream을 활용해서 멀티파트 파싱을 준비하고 있습니다 :D
- .mark(), .reset()을 활용해서 가변 길이 byte[]에 대응하고 있습니다.
- xml 기반의 빈 팩토리 비스무리한 걸 만들었습니다.
- 싱글톤을 보장하기 위해서 싱글톤 객체는 모두 private 생성자를 갖게 했습니다.
- 이를 기반으로 리플랙션을 활용해서 BeanStorage에 빈을 저장해요!
- postBeanProcessing을 활용해서 오토와이어와 순환 참조 문제를 해결했습니다.
- 멀티파트 파싱을 빨리 구현하는게 목표입니다.
- 오늘 안에 8단계 끝내기!
-
Connection
,Statement
등을 관리를 편리하게 하기 위해JdbcTemplate
를 구현했습니다. -
DataSource
인터페이스의 h2 구현체인JdbcConnectionPool
을 사용했습니다. - 지금은 모든 객체를 직접 싱글톤으로 만들어 필드에서 바로 객체를 가져와 세팅하는데, 다른 분들께서 reflection을 활용해 객체를 생성하고 주입해주는 방식으로 구현한 게 좋아 보였습니다. 시간이 된다면 리팩토링 하고 싶습니다.
- 지금
JdbcTemplate
에서JdbcConnectionPool
을 직접 생성해 사용하기 때문에 테스트 시에 프로덕션 DB를 사용하게 되는 문제가 있습니다. 이를 해결하기 위해H2Config
객체에 DB url, username, password을 담아 외부에서 주입하도록 변경했습니다.
- InputStream의 mark, reset 메소드에 대해서 활용해야 겠다는 생각을 해보지 못했는데, 잘 활용한 분이 있어서 인상적이었습니다.
- 의존성 주입을 Queue를 통해 구현한 부분이 인상깊었습니다. 구현 방법은 다음과 같습니다.
- Queue에서 생성해야할 클래스를 가져옵니다.
- 만약 주입되어야 하는 생성자 인자가 컨테이너에 없다면 다시 Queue에 담습니다.
- 반복해서 Queue를 순회하다가 순환참조가 감지되면 예외를 발생시킵니다.