전체 글

·Self Q&A
요청 받아야 하는 파라미터(@RequestParam)이 많으면일일이 다 작성을 해줘야 하는가?      상황 --쇼핑몰 프로젝트에서 상품 목록을 조회하는 API를 작성하는데HTTP 메서드가 GET이기 때문에 파라미터를 통해서 데이터를 받아와야 한다. 여기서 받아와야 하는 데이터String itemSort     :     정렬Long categoryId     :     카테고리itemName     :     상품명nowPage     :     현재 페이지 이를 코드로 작성하면@GetMapping("/itemList")public ItemDto.SimpleItemPageResponse showItems(@RequestParam("itemSort") String itemSort, @RequestPara..
·Spring Boot
회원가입을 할 때 특정 형식의 값일 때에만회원가입이 가능하게 하려면 어떻게 해야할까?      환경 --IntelliJ community  2023.1.5Spring Boot 3.2.1JDK 17 build.gradle [ dependencies ]implementation 'org.springframework.boot:spring-boot-starter-validation'기존 'org.springframework.boot:spring-boot-starter-web' 의존성 안에 validation이 포함되어 있었지만Spring Boot 2.3 부터는 포함되어 있지 않기 때문에 따로 validation 의존성을 추가해야한다.만약 @Valid가 아니라 @Validated 어노테이션을 사용한다면 해당 의존..
·Self Q&A
프로젝트를 하다보면 DTO가 너무 많아진다.많은 DTO를 깔끔하게 정리하는 방법이 무엇일까?      DTO가 많아지면? --우선 DTO의 이름을 짓는 부분에서 어려움이 생긴다.이름을 지을 때 비슷한 이름들로 짓게 되기도 할 것이고 DTO가 많아질 수록 DTO를 구분하기 어려워지고 난잡해진다.그리고 코드의 가독성과 유지보수성에 대해서도 문제가 발생할 수 있다.--    패키지(폴더)로 구조화하기 --관련된 DTO끼리 패키지에 따라 그룹화로 하는 방법이다. order에 관련된 DTO는"com.example.application.dto.order" 패키지 안에 넣고 item에 관련된 DTO는"com.example.application.dto.item" 패키지 안에 넣어서 각자 관련된 DTO끼리 묶어서 관리하..
·Spring Boot
공통된 예외 처리에 대한 코드가 자주 있다면이를 통일 시켜서 코드를 줄일 수 있는 방법이 무엇일까?      Spring에서 제공하는 기능 --Spring에서는 모든 @Controller 클래스에 대해 처리할 수 있도록 제공하는 기능이 있다. @ControllerAdvice@RestControllerAdvice  @ControllerAdvice는Spring MVC 패턴일 때 주로 사용되며 주로 HTML와 같은 View를 응답한다. @RestControllerAdvice는@ControllerAdvice + @ResponseBody로RESTful API에서 주로 사용되며 주로 JSON 또는 XML과 같은 데이터를 응답한다.  그리고 Spring..
·Spring Boot
결제 부분에서는 어떻게 구현을 해야할까? 환경 -- IntelliJ Community 2023.1.5 Spring Boot 3.2.1 JDK 17 build.gradle [ dependencies ] repositories { mavenCentral() // 포트원(구 아임포트)은 maven 기반으로 의존성을 추가한다. (여기에 jitpack.io를 추가하면 gradle에서도 iamport라이브러리를 추가할 수 있다.) maven { url 'https://jitpack.io' } } dependencies { // 포트원(구 아임포트) 라이브러리 implementation 'com.github.iamport:iamport-rest-client-java:0.2.23' } 포트원은 maven 기반의 라이브..
·Spring Boot
쇼핑몰에서 JWT를 이용하여 로그인 기능을 구현하려면코드를 어떻게 작성해야 할까?      환경 --IntelliJ Community 2023.1.5Spring Boot 3.2.1JDK 17 build.gradle  [ dependencies ]implementation 'org.springframework.boot:spring-boot-starter-security'testImplementation 'org.springframework.security:spring-security-test'implementation 'io.jsonwebtoken:jjwt-api:0.11.5'implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'implementation 'io.jsonw..
·Self Q&A
JWT를 이용하여 로그인을 구현하려고 할 때 기본적인 JWT만 이용하면 보안적으로 좋아보이지 않아서 이 보안을 높이는 방법들은 무엇이 있을까? 기본 JWT 방식 -- 사용자(클라이언트)가 서버에게 로그인 정보를 전달 서버는 요청 받은 로그인 정보와 그 외의 정보를 가지고 암호화하여 Token 생성 후 다시 클라이언트에게 응답 클라이언트는 이 후 서버에게 요청할 때마다 추가로 Token을 전달 서버는 Token을 검증 후 정상이라고 판단하면 로직을 수행 -- Token을 탈취 당하면 탈취자는 무제한으로 Token을 사용할 수 있는데? [ Access Token에 유효기간 정의 ] -- 우선 JWT 방식은 Stateless(무상태성)이라서 Token을 서버에서 제어할 수가 없다. 그래서 탈취를 당하면 서버에..
·Spring Boot
Spring에서 제공하는 Security는 어떻게 이루어져 있는가? Spring Security란? -- Spring 프레임워크의 기반으로 만들어진 애플리케이션에서 보안을 담당하는 프레임워크이다. 주로 인증(Authentication), 권한 부여 또는 인가(Authorization), 보안 설정 등을 처리하는 데에 활용된다. 인증과 권한 또는 인가는 Filter 흐름에 따라서 처리된다. Filter는 Servlet(Dispatcher Servlet)으로 가기 전에 동작하므로 간단하게 설명하자면 HTTP 요청을 먼저 받아서 컨트롤러에 넘기기 전에 해당 요청을 먼저 검증하여 올바른 요청인지 판단한다. Dispatcher Servlet이란? HTTP 요청을 가장 먼저 받아서 적합한 컨트롤러에 전달해주는 프론..
아-니지
성장 기록.zip