목록2022/06 (7)
늘
1. static vs bean utils와 관련되면 static을 사용할 것이다. 어디서든 재사용 가능하고 도메인 로직에 포함이 되지 않는 기능, 상태를 갖지 않는 클래스 ex) 날짜를 스트링포멧으로 변경 즉, 상태를 갖지않고, 외부 자원에 의존하지 않고 단순히 변환하는 일만을 담당하면 bean으로 등록할 필요가 없다. 의존성관계가 맺어지고 의존성이 필요하다면 bean static 함수 모음 클래스의 모든 함수는 인자가 동일할 경우 항상 동일한 결과를 리턴해야 한다. 이 규칙을 지킬 수 없으면 POJO Bean으로 만들라. 이것이 이뤄지려면 함수 안에서는 외부 자원(Resource)에 대해 하나도 의존하면 안된다는 선결 조건을 충족해야 한다. 싱글톤과 정적 클래스 차이 싱글톤은 인터페이스를 만들수 있어..
1. RestDocs vs swagger 스웨거와는 다르게 프로덕션 코드에 어노테이션을 붙이지 않아서 좋다! 스웨거를 사용하면 뭔가 프로덕션 코드에서 테스트를 위한 코드가 짜여진 느낌?이 든다. 레퍼런스가 많다! - 여러 레퍼런스들을 참고했었는데 자료들이 많아서 쉽게 적용할 수 있다! 운영 코드를 퓨어하게 가져가고 싶다면 레스트 독스를 사용하고 이를 포기하더라도 테스트 코드를 짜고 관리하는 비용을 지불할 경우에는 스웨거를 사용하는 느낌이죠. 2. 잦은 api요청의 영향 API 요청 하나도 내부 서버에서 무거운 로직을 실행하거나 DB를 오래 조회하는 쿼리를 날린다면 성능에 무리가 될 수 있어요. 또한 사용자도 기다리는 시간이 늘어나서 좋지 않은 경험을 하겠죠. 물론 요청의 개수도 성능에 영향을 미쳐요. D..
인텔리제이에서 지원하는 .http라는 파일을 만들면 포스트맨을 대체하여 매우 편리했던 경험이 있었다. 이러한 경험을 글로 정리해서 공유해보려고 한다. 장점 포스트맨을 사용했을 때는 매번 테스트 해볼때마다 복붙을 했었지만, .http라는 파일로 관리하여 저장할 수 있다. Code highlighting이 가능해서 더욱 직관적이다. 코드 자동 완성의 기능들이 있다. 단점 음..굳이 뽑자면 파일이기 때문에 관리를 해야 한다? 인 것 같다. POST 요청 위 처럼 POST로 요청을 보낼 때, Content-Type을 명시해주고 한 칸 띄우고 json형식으로 입력해주면, 테스트용 디비에 아래처럼 잘 들어간 것을 확인할 수 있다. 그리고 로그인에 성공을 하면, accessToken도 잘 나오는 것을 확인할 수 있다..
스프링이 관리할 객체를 어떻게 지정할까? @ComponenetScan이 하위 클래스들을 쭉 훑으면서 @Component로 설정된 빈들을 자바 빈으로 관리하도록 설정한다. 어떤 객체를 스프링이 관리해야할지? 의존성이 있다면 스프링이 관리해주는게 좋다고 생각한다! 스프링이 의존성을 관리해주기 때문이다. 계속 의존성이 연결되는걸 스프링의 빈이 관리해주니 편하다. 예를 들면, spring-boot-starter-jdbc: 의존성을 추가하고 jdbcTemplate을 빈에서 불러오는데 빈으로 의존성이있는 20개 정도가 있다. 이처럼 무수히 많은 의존성들을 스프링이 관리해주기떄문에 좋다. 경험으로는 spark web에서 spring으로 전환하니깐 의존성관리를 해줘서 엄청 편했다! 빈으로 등록하면 자동으로 가져와서 사..
단방향 해시 함수(one-way hash function)의 다이제스트(digest) 보통 단방향 해시 함수는 수학적인 연산을 통해 원본 메시지를 변환하여 암호화된 메시지인 다이제스트를 생성한다. 원본 메시를 안다 -> 암호화된 메시지를 알 수 있다. 암호화된 메시지를 안다 -> 원본 메시지를 모른다. 한쪽으로만 알 수 있으므로 이와 같은 처리를 '단방향성'이라고 한다. 단방향 해시 함수는 예를 들어 비밀번호가 asd일 때, 해시 알고리즘인 SHA-256을 이용하여 암호화할 때, f52bvs32c2f3f86kk88vc6c490628285a482af15ascb19541d54saz526a3f6c7 와 같이 나온다면 asd1을 암호화하면 fb8c2e2b85ca81eb4350199faddd983cb26af306..
Spring REST Docs는 테스트가 통과해야 문서화가 된다. API문서 자동화에는 대표적으로 swagger와 Rest docs가 있는데 개인적으로 RestDocs를 선호한다. 장점 Spring REST Docs는 테스트가 성공하지 않으면 문서를 만들 수 없습니다. 즉, 반 강제로 테스트를 해야 하고 이를 통해 신뢰도 높은 api문서가 나온다. 실제 코드에 추가되는 코드가 없습니다. - swagger를 보면 프로덕션 코드에 어노테이션이 덕지덕지 붙어있는데, 이는 관심사의 분리가 실패된 케이스가 아닌가.. 라는 생각이 들어서 RestDocs를 선호한다. 커스터마이징 가능 문서화에 사용할 테스트 도구 여기서 API문서화 할때는 Controller테스트를 통해서 생성하므로 RestAssured보다는 Moc..
uniq 중복된 문자열을 제거한다. 이때 정렬된 문자열에서 중복되어야만 제거가 된다. 즉, sort | uniq는 거의 세트라고 생각해도 될 것 같다. history 지금까지 사용했던 명령어들을 보여준다. ex) history | grep 'docker' : 이전에 사용했던 docker가 포함된 명령어들 출력 출력된 히스토리 번호 앞에 !를 붙여주면 바로 명령어 사용이 가능하다. & 보통 build/libs에 jar파일이 생성되는데 해당 디렉토리에서 아래와 같이 명령어를 실행해주면 서버에서 jar파일을 돌릴 수 있다. 이때 뒤에 &는 백그라운드로 실행하겠다는 명령어이다. jobs 터미널에서 백그라운드 작업 확인이 가능하다. fg%{jobs번호} fg %1을 통해서 1번 백그라운드 작업을 포워그라운드로 다..