1주 간의 수업과 과제를 진행하면서 새로 알게 된 개념이나 잘못 알았던 개념에 대해 이야기 해봅시다.
강태산
- Spring-Session을 통해 세션 클러스터링을 구현해본점이 좋았다.
- @Transactional을 이해하고, 주의점을 배웠다.
- package-private을 조금 이해할 수 있었다.
- Service → Converter
- Class의 접근제어 지시자를 변경한다.
- cascade, 고아객체를 이해했다.
- @Transactional을 더 이해했다.
- 단순 Read에도 붙여주어야 지연로딩이 가능하다.
- Security와 JWT를 활용한 인증, 인가 방식을 배울 수 있었다.
- JwtAuthenticationFilter 구현
- SecurityContextRepository 커스텀
김지웅
- JPA 프록시, 지연로딩과 즉시로딩 이 부분을 좀 더 자세히 알게되었음
- DTO를 여러개로 만드는 것이 코드를 읽을 때 조금 더 좋았다는 걸 알게됨
- 스프링 세션을 겉핥기? 로라도 알게된 점이 좋았음. 처음 보는 형태였기 때문에.
- DDD 책 예제 코드를 좀 따라쳐보면서 어떤게 도메인 로직이고 하위 도메인 간에 지켜져야할 규칙들에 대해 자세히 알게됨
- 홍구님이 세션에서 설명해주신 CQRS에 대해 확실히 이해가 되었고 예제 코드를 따라치면서 패키지 구조를 어떻게 가져가야할지에 대해 알게되었다.
- 깨끗한 코드는 어떤 코드인가?
- 모든 것을 검증하는 세세하고, 한 가지만 하는 코드
- 가독성이 좋은 코드
- 남이 고치기 쉬운 코드
- 주의 깊게 짠 코드
- 중복 없음, 네이밍 깔끔, 단순한 추상화가 된 코드
방은혁
- Spring Security 강의를 통해 Spring Session의 동작원리를 배웠다. 그리고 일일 미션을 통해 JPA로 커스터마이징한 UserDetailsService 구현체를 만드는 것도 처음 해봤다.
- 이펙티브 자바를 통해 클래스의 접근 제어자와 은닉화에 대해 더 자세한 내용을 배웠다.
- JPA 피드백을 반영하면서, Exception Handler 개념을 다시 정리하고 적용했다.
- 이펙티브 자바를 통해 클래스를 불변으로 만들면 얻을 수 있는 장점에 대해 알 수 있었다.
- Spring Security 강의를 통해 OAuth의 정의, 종류에 대해 알 수 있었다. 또 Authorization Code Grant 구현 방법도 알 수 있었다.
이한주
- JPA 엔터티의 기본 생성자는 protected, public 접근 제어자가 가능하다. hibernate가 생성한 proxy 객체가 엔터티 클래스를 상속하기 때문이다.
- 하드코딩(생성자 인자에 문자열을 직접 넣음)을 하기 보다는 상수를 활용하는게 가독성이 좋은 코드가 된다.
- 데이터베이스를 사용한 인증 방법을 배움
- 서비스 계층의 Read 작업에도
@Transactional
을 붙여서 안전성을 높일 수 있다.
- 스프링에서 JSON 데이터가 넘어올 때
Jackson2HttpMessageConvert
클래스가ObjectMapper
를 이용해 변환을 해줘서 DTO 클래스에 setter가 따로 없어도 된다.
- OAuth 인증에 Authorization Code Grant 말고도 다른 방식을 배울 수 있었다.
정다현
- toString 메서드 정의할 때 + 연산자를 사용해야 할지 StringBuilder를 사용할 지 많이 고민했었는데, ToStringBuilder를 알게 되었다. 앞으로 toString 메서드 정의를 할 때는 ToStringBuilder를 사용할 것 같다.
- yaml로 DB 설정하는 방법이 인상 깊었다. 프로젝트 안에 데이터베이스를 위치시켜서 프로젝트와 묶을 수도 있고 많이 배웠다.
- 세션 클러스터에 알게 되었고, 서버의 문제가 생겼을 때 세션을 로그인은 어떻게 해결할지 알게 되었다.
- Oauth 인증 과정에 대해서 알게 되었다
- dto를 controller하고 model 중에 어디에 위치시킬지 고민이 많는데, 피어 리뷰를 통해서 dto 패키지를 따로 생성해서 위치시켰다
- spring validator를 직접 활용해보았다. Id에는 NonNull을 사용하면 생성할 때 에러가 발생했다.
팀 토론 (제일 마지막으로!! 중간에 토론 금지!!)
- 마르코 코드 리뷰 중 Put vs Patch에 대해 고민.
- 코테에서 파이썬에 대해 어떻게 생각하는가?
- validation 검증 어떤 방식을 사용 했는지
@DataJpaTest
는 Repository 관련한 빈들만 가져와준다.