스프링22 2022.05.20 《스프링 부트 권한 처리》 스프링 부트 프로젝트 중이다. jwt를 이용한 인증은 다 끝났고 인가 작업만 남았다. 대부분 스프링 서큐리티를 사용해서 권한 처리를 하는듯하다. 나는 일단 서큐리티를 사용하지 않고 짜고 있기 때문에 고민을 좀 많이 해봤다. 결론을 내리자면 인터셉터를 이용하기로 결심했다. 관리자인지 회원인지 인증이 필요한 작업이든지 중복되는 로직이 너무 많아지므로 이것은 인터셉터에서 컨트롤러로 넘어가기 전에 인가 작업을 해줘야 하는 것이 주된 이유다. 한번 해보자~ => 전반적인 계획 작성 중간 정리 혼자 프로젝트를 해서 인지 속도가 너무 나질 않는다. 생각을 해보았다. 어느 한 기능이든 유지보수가 용이하게 설계하기 때문이라는 생각이 들었다. 가장 시간을 많이 쏟은 부분은 Restful 한 설계 방식과 인증 인가 부분이다.. 2022. 5. 20. 2022.05.17 「@Transactional 옵션 및 성능」 스프링 부트 프로젝트를 하던 도중 Service 클래스에서 @Transactional 사용에 옵션을 설정할 수 있다는 것을 처음 알았다. 옵션을 한번 추가해보라는 피드백을 받고 한번 이 에너테이션에 대해 알아보기로 했다. 프로그램 성능에 직접적인 영향을 끼칠 수도 있는 중요한 옵션이기 때문에 한번 정리를 해보겠다. 트랜잭션(Transaction)의 정의 데이터 베이스의 상태를 변경할 때, 한번에 수행되어야 하는 연산 트랜잭션 ACID 성질 원자성(Atomicity) : 트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않거나 해야한다. 일관성(Consistency) : 트랜잭션은 일관성 있는 DB 상태를 유지해야한다. 작업 처리의 결과가 항상 일관되어야 함. 독립성(Isolation) : 동시에 실행되는.. 2022. 5. 17. 2022.05.14 「JWT 인증」 인증을 구현하기 위해 기존에 사용하던 Session 로그인이 아닌 JWT를 이용하여 인증을 구현했다. 토큰을 처음 사용했다 보니 알아가는데 너무 오래 걸렸다. 무엇보다 나는 스프링 시큐리티를 사용하지 않고 서블릿 필터나 스프링 인터셉터를 이용해 토큰 유효성 검사를 하려고 했어서 더 쉽지 않았던 것 같다. 이번 프로젝트 인증에서 Session을 사용하지 않은 이유는 서버의 규모가 확장될 때의 인증 문제이기 때문인데 JWT를 이용한 인증도 여러 가지가 있기 때문에 나의 프로젝트에 맞는 단계가 어디인지에 상당히 헷갈렸던 한 주였다. 인증 작업을 하며 문제가 생겼던 부분이나 구현한 부분에 대해 정리를 해보겠다. Rest API를 설계할 때 인증은 session 기반이 아닌 토큰 기반으로 하는 것이 더 restf.. 2022. 5. 14. 2022.04.26의 기록 ▶ 파트 1 (10시 ~ 11시 10분) 1. 테스트 코드 최종 수정 2. 추후 계획 정리 3. 보건증 발급 및 알바 준비 ▶ 파트 2 (3시 ~ 12시) 1. 스프링 부트 프로젝트 생성 후 깃 연동 (이건 이제 안 까먹겠다..) 2. 자기소개서 수정 3. mysql 질문 정리 및 CH 8, 9(9.2.3 전까지) 정리 4. 알고리즘 고득점 키트 - 해시 5. mysql workbench 설치 ▶ 최근 이슈 1. 시간 부족 => 학원 수료해서 시간이 많이 날줄 알았는데 생각보다 적은 것 같다.. > 원인 : 운동 갔다 오는 시간, 알바 시간 > 해결 : 1시간만 더 일찍 일어나 보자, 운동은 짧고 굵게. 2. 테스트 코드 => 자바 프로젝트 후 테스트 코드를 작성하며 TDD 방식을 조금이나마 깨닫게 되었.. 2022. 4. 26. 2022.04.25의 기록 ▶ 파트 1 (2시 ~ 12시) 1. 테스트 코드 수정 2. 노션 자기소개서 정리 -> 디테일한 부분 추가해보자 3. Spring 개념 정리 4. mysql 옵티마이저와 힌트 5. wiki 수정 6. 개념, 자소서, 프로젝트 계획 검수 7. 알고리즘 1문제 ▷ 테스트 코드 문제 : 하나의 값만 임의로 비교하는 것도 좋을 것 같지만 3가지 경우를 모두 테스트하면 좋겠다 해결 : Static 메서드를 하나 선언하여 입력 정수 값과 기대 값을 비교하는 테스트로 수정하였다. 2022. 4. 25. 2022.04.24의 기록 ▶ 해야할 일 1. Gradle test code 수정 2. mysql CH7. 데이터 암호화 정리, CH8. 인덱스 중간 3. Boot 프로젝트 구상 (점심 먹고 쏟아붇자) https://github.com/GroovyArea/Shop-with-SpringBoot/wiki 4. 알고리즘 1문제 ▷ 테스트 코드 문제 1 : gameCount()를 호출 할 때마다 예외가 발생됨 해결 : 제어문을 통해 해결 문제 2 : @ParameterizedTest 진행 시 파라미터를 메서드의 매개변수로 집어넣어주지 않아 테스트 코드 문제 발생 2022. 4. 24. 2022.03.05~03.06 의 기록 ▶ 하루 => 공부 관련1) 스프링 개구리책 CH5까지 읽고 정리2) MVC 객체지향 리팩토링 후 피드백3) 기술 질문 답변 못한 부분 노션에 정리 => 파이널 프로젝트 관련1) DB ERD 그려놓기 & 스프레드시트 정리2) git 협업▶ 문제 정리1. 상수의 중복과 범람으로 난해한 코드해결 > enum 클래스 3개를 작성하여 해결package Enum;public enum PrintGameResult { WIN_RESULT("님이 이겼습니다."), DRAW_RESULT("비겼습니다."), LOSE_RESULT("컴퓨터가 이겼습니다."); private final String printGameResult; PrintGameResult(String printGameResult) { this.pri.. 2022. 3. 5. 이전 1 2 다음 반응형