본문 바로가기

🛠 백엔드26

[Spring] 민감한 정보 관리하기 wt. secretKey JWT를 사용하다 보면 secretKey를 어떻게 관리해야 하는지 고민해본적이 있을 겁니다.이는 공개되게 되면 매우 위험하므로 적절하게 관리하는 것이 중요하다. 1. 메모장직접 메모장에 시크릿 키를 저장하여 파일을 읽어 사용하는 방법이다.원격 저장소에는 secretKey를 비워두고, 배포 시점에 직접 바꿔주는 식으로 진행하면 된다. 2. application.properties 또는 application.ymlsecretKey를 application에 저장한 후, @Value를 이용하여 가져오는 방법이다.// application.propertiesauth.jwt.secret= Yn2kjibddFAWtnPJ2AFlL8WXmohJMCvigQggaEypa5E=// POJO@Componentpublic cla.. 2024. 7. 1.
RequestBody의 원리와 기본 생성자 RequestBody를 원리를 이해하기 전, 먼저 개념 정리를 해보자.직렬화와 역직렬화직렬화는 오브젝트를 문자열 또는 바이트 스트림으로 변환하는 것이다. 보통 오브젝트를 데이터베이스, 파일, 캐시 등 저장하기 위한 연속적인 데이터로 변환할 때 사용된다.이와 반대로 역직렬화는 문자열 또는 바이트 스트림을 오브젝트로 변환하는 것을 의미한다. 쉽게 말해 직렬화 종류는 우리가 자주 사용하는 JSON, XML 등이 존재한다. 이런 직렬화와 역직렬화 시 사용되는 것이 Http Message Converter이다.Http Message Converter 는 HTTP Request Body 를 Java 오브젝트로 변환( 역직렬화 )하거나 Java 오브젝트를 특정 형태로 변환( 직렬화 )하는 역할을 수행한다. Reque.. 2024. 5. 23.
JDBC란 무엇인가? (+ Spring JDBC) JDBC쉽게 말해 JAVA에서 데이터베이스에 접근할 수 있도록 도와주는 API이다.먼저 왜 JDBC가 등장했는지 확인해보자.JDBC 이전의 문제점새로운 데이터베이스의 사용법을 배워야한다.DB 벤더마다 사용법은 다름다른 DB 사용 시, 새롭게 배워야하는 함프로덕션 코드의 변경 범위가 커질 수 있다.이게 무엇보다 큰 문제점DB를 다른 것으로 바꿀 경우, 모든 코드를 싹 고칠 수도 있음이를 의존 역전 원칙(DIP)의 위배라고 함DIP는 추후에 알아보자그렇기 때문에 JDBC는 DB에 접근하기 위한 모든 과정을 담당하여 우리는 DB 벤더마다 사용법을 학습할 필요가 없다.JDBC의 구성요소1. DriverDBMS와 통신하는 역할을 수행DB 벤더마다 별도의 드라이버가 필요JDBC Driver Manager라이브러리로.. 2024. 5. 19.
[초록스터디] Spring MVC 회고 이번 Spring MVC 미션을 수행하면서 생각했던 점들을 적어볼까 한다.2단계1. 날짜 포맷은 어떻게 써야하는가?이번 문제에서 날짜와 시간을 저장하는 필드가 존재했다.- Java 8 이전에는 Data를 이용하여 날짜를 저장하였지만, Java 8 이후부턴 LocalDate, LocalTime, LocalDateTime을 이용- 날짜 포맷을 맞추기 위해 Reservation에서 @DataTimeFormat을 이용하여 포맷을 정했다.@DateTimeFormat(pattern = "yyyy-MM-dd")private LocalDate date;@DateTimeFormat(pattern = "HH:mm")private LocalTime time; Q. 날짜 타입 객체는 어떻게 만들지?처음에 당연히 이게 정상적으.. 2024. 5. 15.
[Java] 일급 컬렉션을 왜 사용할까? Collection을 Wrapping 하면서, 그 외 다른 멤버 변수가 없는 상태 이번 로또 문제를 풀면서 맞이했던 문제들을 살펴보자. 1.  Validation 처리LottoNumber는 List numbers를 wrapping하는 일급 컬렉션이다.numbers는 6개의 중복되지 않는 숫자만 포함해야 한다. 일급 컬렉션의 개념을 이해하기 전엔, "입력 시 Validation 처리해야 하는가?" 라는 고민을 했다. View 차원에서 "입력받는 값에 최소한의 유효성 검증을 진행한다." 의 규칙이 존재하기 때문에 상관이 없을 것이라 생각했다.MVC Pattern에서의 유효성 검사 (velog.io) MVC Pattern에서의 유효성 검사책임 전가 패스velog.io 그런데 조사를 더 해보니 일급 컬렉션은 이.. 2024. 5. 5.
MVC 패턴 정의 및 규칙 기본 정의관심사에 따라 비즈니스 로직과 화면을 분리 모델 : 데이터와 비즈니스 로직 관리뷰 : 레이아웃과 화면 처리컨트롤러 : 모델과 뷰로 명령 전달 사용 이유1. 관심사 분리2. 각자의 역할이 구분되어 있어 서로간의 결합도를 낮출 수 있음3. 분리되어 있기에 코드의 재사용성 및 확장성 높음4. 변경 필요 부분 쉽게 파악 가능하여 유지보수 및 테스트 용이5. 협업 시, 커뮤니케이션 효율성 높음 -> 코드 충돌 방지 가능 한계점- Model과 View의 의존성 완전 분리 힘    - 하나의 컨트롤러에 여러 개의 Model과 View가 엉키게 되어 의존성이 커- 컨트롤러의 부담이 커짐 (Massive-View-Controller 현상) 모델SW, APP에서 정보 및 데이터 부분Controller에게 받은 데.. 2024. 4. 30.