[TodayKeywords] 오늘 공부한 키워드
의존성
: 개발 할 때 인스톨한 라이브러리들에 의존해야 개발 및 실행이 가능하다. 따라서, 라이브러리 리스트를 의존성이라고 한다.build.gradle의 repository
: 의존성을 가져오는 곳의 위치를 나타낸다.npm
같은 개념.base64
: _ , - 가 없다고 한다. 이외 다른 기호를 사용해야한다.spring 의 user table 사용불가
:MYSQL
예약어 중user
이 있기때문에, table명으로 사용이 불가하다. 따라서 @Table 을 이용하여, name을 다르게 설정해주어야한다.
[NextKeyworks] Study Queue
- HTTPS
- SOLID
- loop label
- CSV
- 파일입출력
- UML
- UTC
- epoch time / Instant time
- MVC
- URL ClassLoader
- Secure ClassLoader
- JNI
- GC
- HOF
- 자바 해시코드(hashCode)
- OSI 7 계층
- PCB
- 스프링 설계철학
- RESTful
- 준 영속성
- 지연로딩
- 프록시객체
- jpa - mybatis 의 차이
- orm - mapper 의 차이
- 쿠키/세션/로컬 스토리지
- AOP
- HttpMessageConverter
[회고] 221213 : 생각하며 개발하기
오늘은 개인프로젝트 1차과제를 마무리했다. 계속 JWT를 셋팅하는 것이 귀찮아서 꾸물대다가 오후 늦게 시작했는데, 속도가 붙으니깐 금방 완성 할 수 있었다. 진행하다보니, 역할과 책임에 대해 고민되는 순간이 많았다.
먼저, 패스워드와 이메일을 검사하는 로직을 어디에 넣을지 고민했다. 해당 메서드를 저장하는 곳은 유저이기 때문에, 유저에서 static으로 선언하여, 곧바로 접근 할 수 있는 validation을 만들어 검증하려고했다. 그 전에, spring entity validation
이라는 키워드로 검색해보니, 내가 현재사용하고 있는 JPA Wrapper인 Hibernate에서 제공하는 @Valid
와 @Validate
라는 2가지 내장 validation을 찾을 수 있었다. controller 에서 검증하는 것을 기본으로 여기고 있었고, 다른 곳에서 이 검증을 사용하기 위해선 @Validate
를 사용한다고했다. 보통 기본으로 셋팅되어있는 것이 보통은 해당 라이브러리의 철학이 반영되어있는 것이기 때문에, @Valid
를 사용하여, 애초에 데이터를 받을 때 controller에서 검증 할 수 있도록했다. 하지만, 이전 django는 이런 validation을 entity에서 직접해주었고, 내가 배운이론은 validation은 entity에 선언하여 service에서 직접하는 것이 맞다라고 배웠기때문에.. 아직도 혼란스럽긴하다. 하지만, 기본 철학을 일단 따르려고한다.
두번째로 JWT Token을 검증하고, 검증된 User 인스턴스를 가져오는 로직이 모든 곳에서 반복되기에, 이것을 메소드로 모듈화 시켰다. 하지만, 이 로직을 분리하는게 맞을지, 아니면 일일히 써주는 것이 맞을지, 분리한다면 다른 클래스로 선언해야하는 건지에 대한 고민이 들었다. 일단, 검증은 서비스의 역할이기에 타 클래스로 선언하는 것은 배제했다. 검증은 각 메소드에서 해주어야 하는 책임이기 때문에, 검증만 한다면 분리하는덴 어려움은 없겠지만, 검증하고 그에맞는 유저를 가져오기도 해야해서, 역할이 2개가 되어버리는 상황이 생겼다. 엄청 고민을 하다 차라리 네이밍이라도 자세히하는게 나을 것 같아. 요청을 받아 인증받은 유저를 반환한다. 라는 의미의 메소드명을 짓고, 그것을 지속적으로 사용했다.
등등 매순간마다, 이걸 사용했을 때, 어떤 의존성이 있을지.. 의존성은 어디에서 발생하는지..내가 SOLID는 잘지키고 있는 것인지 고민하며 진행하니 굉장히 천천히 프로젝트가 진행되었다. 또한, 인터페이스를 사용하다보니, 확실히 이걸 왜쓰냐.. 라는 생각은 들었지만, 명세서를 보고 설계를 하는 것이 한층 수훨하다는 느낌을 받았다. 하지만, 프로젝트의 깊이가 깊질않아서, 굳이 사용 할 필요는 못느꼈다.
어쨋던, 이렇게 생각하며 프로젝트를 진행하다보니, '이유없는코드'들이 없어서 좋았다. 마치, 글씨를 꾹꾹눌러쓴 일기처럼 기억에 남았다.
하지만, 자바의 기본기를 계속 조금씩 잊어가고 있는데.. 얼른 프로젝트 마무리하고 다잡아야겠다..